81740aa5 |
1 | local cmds = require('commands') |
2 | local getopt = require('getopt') |
3 | local bin = require('bin') |
4 | local utils = require('utils') |
5 | local dumplib = require('html_dumplib') |
6 | |
7 | example =[[ |
8 | 1. script run tracetest |
9 | 2. script run tracetest -o |
10 | |
11 | ]] |
12 | author = "Iceman" |
13 | usage = "script run test_t55x7_psk -o <filename>" |
14 | desc =[[ |
15 | This script will program a T55x7 TAG with the configuration: block 0x00 data 0x00088040 |
16 | The outlined procedure is as following: |
17 | |
18 | "lf t55xx write 0 00088040" |
19 | "lf read" |
20 | "data samples" |
21 | "data pskdet" |
22 | "data psknrz" |
23 | "data pskindala" |
24 | "data psknrzraw" |
25 | |
26 | Loop OUTER: |
27 | change the configuretion block 0 with: |
28 | -xxxx8xxx = PSK RF/2 with Manchester modulation |
29 | -xxxx1xxx = PSK RF/2 with PSK1 modulation (phase change when input changes) |
30 | -xxxx2xxx = PSK RF/2 with PSk2 modulation (phase change on bitclk if input high) |
31 | -xxxx3xxx = PSK RF/2 with PSk3 modulation (phase change on rising edge of input) |
32 | Loop INNER |
33 | for each outer configuration, also do |
34 | XXXXX0XX = PSK RF/2 |
35 | XXXXX4XX = PSK RF/4 |
36 | XXXXX8XX = PSK RF/8 |
37 | |
38 | In all 12 individual test for the PSK demod |
39 | |
40 | Arguments: |
41 | -h : this help |
42 | -o : logfile name |
43 | ]] |
44 | |
45 | local TIMEOUT = 2000 -- Shouldn't take longer than 2 seconds |
46 | local DEBUG = true -- the debug flag |
47 | |
48 | --BLOCK 0 = 00088040 |
49 | local config1 = '0008' |
50 | local config2 = '40' |
51 | |
52 | local procedurecmds = { |
53 | [1] = '%s%s%s%s', |
54 | [2] = 'lf read', |
55 | --[3] = '', |
56 | [3] = 'data samples', |
57 | [4] = 'data pskdetectclock', |
58 | [5] = 'data psknrzrawdemod', |
59 | [6] = 'data pskindalademod', |
60 | } |
61 | |
62 | --- |
63 | -- A debug printout-function |
64 | function dbg(args) |
65 | if not DEBUG then |
66 | return |
67 | end |
68 | |
69 | if type(args) == "table" then |
70 | local i = 1 |
71 | while args[i] do |
72 | dbg(args[i]) |
73 | i = i+1 |
74 | end |
75 | else |
76 | print("###", args) |
77 | end |
78 | end |
79 | --- |
80 | -- This is only meant to be used when errors occur |
81 | function oops(err) |
82 | print("ERROR: ",err) |
83 | end |
84 | --- |
85 | -- Usage help |
86 | function help() |
87 | print(desc) |
88 | print("Example usage") |
89 | print(example) |
90 | end |
91 | -- |
92 | -- Exit message |
93 | function ExitMsg(msg) |
94 | print( string.rep('--',20) ) |
95 | print( string.rep('--',20) ) |
96 | print(msg) |
97 | print() |
98 | end |
99 | |
100 | function pskTest(modulation) |
101 | local y |
102 | for y = 0, 8, 4 do |
103 | for _ = 1, #procedurecmds do |
104 | local cmd = procedurecmds[_] |
105 | |
106 | if #cmd == 0 then |
107 | |
108 | elseif _ == 1 then |
109 | |
110 | dbg("Writing to T55x7 TAG") |
111 | |
112 | local configdata = cmd:format( config1, modulation , y, config2) |
113 | |
114 | dbg( configdata) |
115 | |
116 | local writecommand = Command:new{cmd = cmds.CMD_T55XX_WRITE_BLOCK, arg1 = configdata ,arg2 = 0, arg3 = 0} |
117 | local err = core.SendCommand(writecommand:getBytes()) |
118 | if err then return oops(err) end |
119 | local response = core.WaitForResponseTimeout(cmds.CMD_ACK,TIMEOUT) |
120 | |
121 | if response then |
122 | local count,cmd,arg0 = bin.unpack('LL',response) |
123 | if(arg0==1) then |
124 | dbg("Writing success") |
125 | else |
126 | return nil, "Couldn't read block.." |
127 | end |
128 | end |
129 | |
130 | else |
131 | dbg(cmd) |
132 | core.console( cmd ) |
133 | end |
134 | end |
135 | core.clearCommandBuffer() |
136 | end |
137 | print( string.rep('--',20) ) |
138 | |
139 | end |
140 | |
141 | local function main(args) |
142 | |
143 | print( string.rep('--',20) ) |
144 | print( string.rep('--',20) ) |
145 | |
146 | local outputTemplate = os.date("testpsk_%Y-%m-%d_%H%M%S") |
147 | |
148 | -- Arguments for the script |
149 | for o, arg in getopt.getopt(args, 'ho:') do |
150 | if o == "h" then return help() end |
151 | if o == "o" then outputTemplate = arg end |
152 | end |
153 | |
154 | core.clearCommandBuffer() |
155 | |
156 | pskTest(1) |
157 | pskTest(2) |
158 | pskTest(3) |
159 | pskTest(8) |
160 | |
161 | print( string.rep('--',20) ) |
162 | end |
163 | main(args) |
164 | |
165 | -- Where it iterates over |
166 | -- xxxx8xxx = PSK RF/2 with Manchester modulation |
167 | -- xxxx1xxx = PSK RF/2 with PSK1 modulation (phase change when input changes) |
168 | -- xxxx2xxx = PSK RF/2 with PSk2 modulation (phase change on bitclk if input high) |
169 | -- xxxx3xxx = PSK RF/2 with PSk3 modulation (phase change on rising edge of input) |
170 | |
171 | -- XXXXX0XX = PSK RF/2 |
172 | -- XXXXX4XX = PSK RF/4 |
173 | -- XXXXX8XX = PSK RF/8 |