ascii;00 → epochrefset;00 → glbas70;04c1;01 fileautoboot\n ascii\n debug\n reset\n ← reset\n...
TRANSCRIPT
←
→
← ASCII\n
→ ASCII;00\n
→ \n
← EPOCHREFSET;4a3caa45\n
⇅ toggle DTR line → EPOCHREFSET;00\n
→ 4a3caa45;0151bcf5\n
→ \n
← PASSINGGET;00000000\n // get passings starting at 0
→ PASSINGGET;00\n // command echo, no error
→ 00000000;03\n // 3 passings available
→ GLBAS60;0718;01521527;0c;08;9f;1a;0;1;2;00;0\n
→ GLBAS70;04c1;01521536;14;09;9f;1a;0;1;2;00;0\n
→ EMPAL70;047c;0152153b;0e;08;9f;1a;0;1;2;00;0\n
→ \n
AUTOBOOT\n
ASCII\n
DEBUG\n
RESET\n
← RESET\n
→ rrActive\n //immediately at power up, LED ON
→ AUTOBOOT\n //after 3 seconds, LED OFF
← ASCII\n //not necessary for FW 2.5 and newer
→ ASCII;00\n
→ \n
EPOCHREFSET
ref_time_stamp @ ref_computer_time
ref_time_stamp
ref_computer_time
EPOCHREFGET
pass_time_stamp
Computer_Time(pass_time_stamp) =
ref_computer_time + ((pass_time_stamp – ref_time_stamp) / 256.0)
EPOCHREFADJ1D
\n
\n \n .
\n\n \n\n
0x
00: ,
10-1f:
ff:
ASCII
ASCII\n
ASCII;00\n
\n
SITESURVEY\n SITESURVEY;00\n
00;[Noise:2]\n
01;[Noise:2]\n
02;[Noise:2]\n
03;[Noise:2]\n
04;[Noise:2]\n
05;[Noise:2]\n
06;[Noise:2]\n
07;[Noise:2]\n
\n
[Noise]
← SITESURVEY\n
→ SITESURVEY;00\n
→ 00;02\n
→ 01;00\n
→ 02;02\n
→ 03;03\n
→ 04;07\n
→ 05;09\n
→ 06;0a\n
→ 07;04\n
→ \n
BEACONGET
[parameter-id] [value]
CONFSET;[parameter-id:2];[value:2]\n
CONFSET;00\n
[parameter-id:2];[value:2]\n
\n
← CONFSET;08;32\n
→ CONFSET;00\n
→ 08;32\n
→ \n
10
11
CONFGET;[parameter-id:2]\n
CONFGET;00\n
[parameter-id:2];[value:2]\n
\n
← CONFGET;08\n
→ CONFGET;00\n
→ 08;32\n
→ \n
10
[parameter-id] [value]
01 00=disabled (D)
01=enabled
02 00=disabled
01=enabled (D)
03 00=impulse-in
01=beep-out (D)
04 00=disabled (D)
01=enabled
05
usb-kiosk
usb-timing
usb-store©:
05=usb-kiosk
06=usb-timing (D)
07=usb-store©
06 00 – 07
=> (1 - 8)
07 00 – 07
=> (1 - 8)
08
64
00 - 64
09 02 - FF
(default 0F)
Oa 00:disabled
01:enabled (D)
0b 00:disabled
01:enabled (D)
0c
00:disabled
01:automatic (D)
02:force
0d -internal use-
06-08
INFOGET;[parameter-id:2]\n INFOGET;00\n
[parameter-id:2];[value:{2,4}]\n
\n
[parameter-id] [value]
01
(0000 – ffff)
=> (0 – 65535)
1387 = 4999
= A-4999
02
(00 – ff)
=> (0 – 255)/10
18 = 24
= v2.4
03
(00 – ff)
=> (0 – 255)/10
18 = 24
= v2.4
04
0a=active-ext
1e=management-box
28=usb-timing-box
05
(00 – ff)
=> (0 – 255)/10 [V]
28 = 40
= 4.0V
06
07
0 = Fault
1 = Charging
2 = Reduced Charging
3 = Discharging
08
(00 – ff)
=> (0-100)%
4e = 78
= 78%
09
(00 – ff)
=> (0-100)°C
18 = 24
= 24°C
Oa
(00 – ff)
=> (0 – 255)/10 [V]
31 = 49
= 4.9V
0b
0 = loop ok
1 = loop fault
2 = loop limit
4 = loop OVERVOLTAGE error
0c -internal use-
EPOCHREFSET
EPOCHREFGET
EPOCHREFGET\n
EPOCHREFGET;00\n
[ComputerTime:8];[TimeStamp:8]\n
\n
[ComputerTime]
EPOCHREFSET
[TimeStamp]
EPOCHREFSET.
← EPOCHREFGET\n
→ EPOCHREFGET;00\n
→ 4a3caa45;0151bcf5\n // ref_computer_time;ref_time_stamp
→ \n
EPOCHREFSET;<epoch:8>\n EPOCHREFSET;00\n
[ComputerTime:8];[TimeStamp:8]\n
\n
EPOCHREFSET;10\n
\n
[ComputerTime]
[TimeStamp]
← EPOCHREFSET;4a3caa45\n // June 20 2009 11:22:14 UTC+2 == 0x4a3caa46
⇅ toggle DTR line // Time set on rising edge of DTR
→ EPOCHREFSET;00\n
→ 4a3caa45;0151bcf5\n // ref_computer_time;ref_time_stamp
→ \n
cmdString = “EPOCHREFSET;” + toHex(epoch_Time_Now() + 1) + “\n”
// cmdString == ‘EPOCHREFSET;4a3caa46\n’
write_Serial ( cmdString )
wait_until_next_second()
set_Serial_DTR ( HIGH ) // Time set on rising edge of DTR
sleep_200ms ()
set_Serial_DTR ( LOW )
sleep_200ms ()
rcv = read_next_line_Serial() // rcv == ‘EPOCHREFSET;00\n’
rcv = read_next_line_Serial() // rcv == ‘4a3caa46;0151bcf5\n’
ref_computer_time = split_into_array( rcv, “;”)[0]
// ref_computer_time == 0x4a3caa46
ref_time_stamp = split_into_array( rcv, “;”)[1]
// ref_time_stamp == 0x0151bcf5
ref_computer_time ref_time_stamp
CONFSET;0b;00\n
TIMESTAMPGET\n TIMESTAMPGET;00\n
[TimeStamp:8]\n
\n
← TIMESTAMPGET\n
→ TIMESTAMPGET;00\n
→ 0151bcf5\n
→ \n
EPOCHREFADJ1D
EPOCHREFADJ1D TIMESTAMPGET
EPOCHREFADJ1D\n
EPOCHREFADJ1D;00\n
[ComputerTime:8];[TimeStamp:8]\n
\n
[ComputerTime]
[TimeStamp]
← EPOCHREFADJ1D\n
→ EPOCHREFADJ1D;00\n
→ 4a3caa45;0151bcf5\n // ref_computer_time;ref_time_stamp
→ \n
PASSINGINFOGET\n
PASSINGINFOGET;00\n
[Count:4];[StartID:8];[StartTimeStamp:8];
[LastID:8];[LastTimeStamp:8]\n
\n
[Count]
[StartID]
[StartTimeStamp]
[LastID]
[LastTimeStamp]
← PASSINGINFOGET\n
→ PASSINGINFOGET;00\n
→ 0002;00000000;002b6efc;00000001;00823aa8\n // 2 passings
→ \n
PASSINGGET
[StartIndex]
[Count]
<passing(i)> i
[MinStartIndex] [StartIndex]
10 [StartIndex] <passing(i)>
PASSINGGET;[StartIndex:8]\n
PASSINGGET;00\n
[StartIndex:8];[Count:2]\n
<passing([StartIndex])>\n
<passing([StartIndex]+1)>\n
...
<passing([StartIndex]+[Count]-1)>\n
<passing([StartIndex]+[Count])>\n
\n
PASSINGGET;10\n
[StartIndex:8];[MinStartIndex:8]\n
\n
PASSINGGET;[MinStartIndex]
← PASSINGGET;0\n
→ PASSINGGET;00\n
→ 00000000;02\n
→ ZBAAA03;04c6;002b6efc;11;19;1d;15;0;1;1;00;0\n
→ ZBAAA03;04c7;00823aa8;1e;1a;1d;15;0;1;1;00;0\n
→ \n
[TranspCode:string];[WakeupCounter:4];[TimeStamp:8];[Hits:2];[RSSI:2];
[Battery:2];[Temperature:2];[LoopOnly:1];[LoopId:1];[Channel:1];
[InternalActiveData:2];[InternalData:1]
[TranspCode]
[WakeupCounter]
[TimeStamp]
[Hits]
[RSSI]
[Battery]
[Temperature]
[LoopOnly]
[LoopID]
[Channel]
[InternalActiveData]
[InternalData] & 0x40 == 0x40
[InternalData]
ref_computer_time
ref_time_stamp
KARLS07;17ca;0151cbf5;26;13;9f;15;0;0;1;00;0
passing_time_epoch =
ref_computer_time + ((pass_time_stamp – ref_time_stamp) / 256.0)
// passing_time_epoch = 0x4a3caa46 + (0x0151cbf5 - 0x0151bcf5)/256.0
// => 1245489748
passing_time = epoch_to_datetime(passing_time_epoch) // passing_time => Jun 20 2009, 11:22:29
← CONFSET;01;01\n
→ PREWARN;XYZAB23\n\n
→ PREWARN;FDSAS32\n\n
→ PREWARN;ABCDE88\n\n
BEACONGET\n BEACONGET;00\n
[BeaconCount:2]\n
<beacon(0)>\n
...
<beacon([BeaconCount]-1)>\n
<beacon([BeaconCount])>\n
\n
[BeaconCount]
<beacon(i)> i
← BEACONGET\n
→ BEACONGET;00\n
→ 01\n
→ 0457;1;00;11;32;1;1;1;2f;aa98;00000000;00;02;4f;12;00;00\n
→ \n
[ActiveDeviceID:4];[LoopStatus:1];[Mode:2];[LoopData:2];[LoopPower:2];
[Channel:1];[LoopId:1];[PowerConn:1];[PowerStatus:2];[BeaconIndex:4];
[Time:8];[N/A:2];[ChNoiseAvg:2];[TransLQI:2];[TransRSSI:2];
[BeaconLQI:2];[BeaconRSSI:2]
[ActiveDeviceID]
[LoopStatus]
[Mode]
[LoopData]
[LoopPower]
[Channel]
[LoopID]
[PowerConn]
[PowerStatus]
[BeaconIndex]
[Time]
[N/A]
[ChNoiseAvg]
[TransLQI]
[TransRSSI]
[BeaconLQI]
[BeaconRSSI]
← ASCII\n
→ ASCII;00\n
→ \n
EPOCHREFGET
← EPOCHREFGET\n
→ EPOCHREFGET;00\n
→ 00000000;00000000\n // ref_computer_time;ref_time_stamp
→ \n
← EPOCHREFSET;4a3caa45\n
⇅ toggle DTR line → EPOCHREFSET;00\n
→ 4a3caa45;0151bcf5\n // ref_computer_time;ref_time_stamp
→ \n
← TIMESTAMPGET\n
→ TIMESTAMPGET;00\n
→ 02A30001\n
→ \n
← EPOCHREFADJ1D\n
→ EPOCHREFADJ1D;00\n
→ 4b8e2a45;02A30001\n // ref_computer_time;ref_time_stamp
→ \n
← INFOGET;01
→ INFOGET;00\n
→ 01;1387\n
→ \n
0x1387 = 4999
← CONFSET;05;06\n
→ CONFSET;00\n
→ 05;06\n
→ \n
← CONFGET;07\n
→ CONFGET;00\n
→ 07;00\n
→ \n
← BEACONGET\n
→ BEACONGET;00\n
→ 02\n
→ 0685;0;03;22;00;2;2;0;31;00b2;01539ffb;1b;02;00;00;ff;4f\n
→ 1387;1;00;02;0a;2;0;0;31;0221;00000000;1b;02;00;00;00;00\n
→ \n
INFOGET.
[StartId] PASSINGGET
← PASSINGGET;00000000\n <1>
→ PASSINGGET;00\n <2>
→ 00000000;00\n <3>
→ \n
[...some time later, after creating passings...]
← PASSINGGET;00000000\n <4>
→ PASSINGGET;00\n <5>
→ 00000000;03\n <6>
→ GLBAS60;0718;01521527;0c;08;9f;1a;0;1;2;00;0\n
→ GLBAS70;04c1;01521536;14;09;9f;1a;0;1;2;00;0\n
→ EMPAL70;047c;0152153b;0e;08;9f;1a;0;1;2;00;0\n
→ \n
[... small wait between requests ...]
← PASSINGGET;00000003\n <4>
…
0x00000000
⇒ [StartID] 0x00000000
0x03 0x00 [StartID] 0x00000003
← PASSINGGET;00000000\n
→ PASSINGGET;00\n
→ 00000000;40\n <1>
→ GLBAS60;0718;01521527;0c;08;9f;1a;0;1;2;00;0\n
→ GLBAS70;04c1;01521536;14;09;9f;1a;0;1;2;00;0\n
[...]
→ SNRMT06;1260;015215d8;0d;0c;9f;15;0;1;2;01;0\n
→ SNRMT07;2910;015215c9;30;0f;9f;15;0;1;2;01;0\n
→ \n
0x40 == 64
← PASSINGGET;00000040\n <2>
→ PASSINGGET;00\n
→ 00000040;05\n <3>
→ GLBAS98;04d3;015215c9;11;08;9f;1a;0;1;2;01;0\n
→ GLBAS58;074b;0152154d;11;0a;9f;1a;0;1;2;03;0\n
→ SNRMT29;2ad4;01521590;47;0f;9f;15;0;1;2;02;0\n
→ GLBAS78;04e0;01521594;0f;09;9f;1a;0;1;2;02;0\n
→ SNRMT39;111e;01521594;2e;0e;9f;15;0;1;2;04;0\n
→ \n
0x40 0x05 ⇒
← PASSINGGET;00000000\n
→ PASSINGGET;10\n <1>
→ 00000000;0000021d\n <2>
→ \n
0x00 [StartID]
0x21d = 541
0x21d = 541 0x21d + 0d1000 = 0x604 = 1540