src/hp34comm.cpp

changeset 28
424d792fea4f
parent 21
9ffa9d727d80
child 37
07e8ca2bdf6d
equal deleted inserted replaced
27:8f2be7aaec00 28:424d792fea4f
1 #include "hp34comm.h" 1 #include "hp34comm.h"
2 #include "mbed.h" 2
3 #include "CircularBuffer.h" 3 #include <mbed.h>
4 #include <CircularBuffer.h>
4 5
5 /***** HP 34970A communication class ***/ 6 /***** HP 34970A communication class ***/
6 7
7 #ifdef DEBUG2 8 #ifdef DEBUG2
8 9
35 cur_gstate(GSTATE_IDLE), 36 cur_gstate(GSTATE_IDLE),
36 ncmd(0) 37 ncmd(0)
37 { 38 {
38 serial.baud(187500); 39 serial.baud(187500);
39 cur_state = STATE_IDLE; 40 cur_state = STATE_IDLE;
40 serial.attach(callback(this, &HPSerial::rxIrq), Serial::RxIrq); 41 serial.attach(callback(this, &HPSerial::rxIrq), SerialBase::RxIrq);
41 } 42 }
42 43
43 void HPSerial::startup(void) { 44 void HPSerial::startup(void) {
44 cur_gstate = GSTATE_STARTING; 45 cur_gstate = GSTATE_STARTING;
45 set_timer(0.002); // launch the startup in 10ms 46 set_timer(0.002); // launch the startup in 10ms
103 val.value[i] = 0x00; 104 val.value[i] = 0x00;
104 cmdbuf.push(val); 105 cmdbuf.push(val);
105 } 106 }
106 107
107 void HPSerial::send_ack(uint8_t c) { 108 void HPSerial::send_ack(uint8_t c) {
108 serial.putc(c); 109 serial.write(&c, 1);
109 set_timer(RXTIMEOUT); // if nothing else happen in the next ms, reset 110 set_timer(RXTIMEOUT); // if nothing else happen in the next ms, reset
110 } 111 }
111 112
112 HPSerial::state_t HPSerial::do_state_initial(uint8_t c) 113 HPSerial::state_t HPSerial::do_state_initial(uint8_t c)
113 { 114 {
182 // TODO: check ACK values (c is the received ack) 183 // TODO: check ACK values (c is the received ack)
183 if (tr_data.pos >= tr_data.size) 184 if (tr_data.pos >= tr_data.size)
184 { 185 {
185 return do_state_eot(); 186 return do_state_eot();
186 } 187 }
187 serial.putc(tr_data.payload[tr_data.pos++]); 188 serial.write(&tr_data.payload[tr_data.pos++], 1);
188 set_timer(RXTIMEOUT); 189 set_timer(RXTIMEOUT);
189 return HPSerial::STATE_SENDING; 190 return HPSerial::STATE_SENDING;
190 } 191 }
191 192
192 HPSerial::state_t HPSerial::do_state_eot(uint8_t c) 193 HPSerial::state_t HPSerial::do_state_eot(uint8_t c)
193 { 194 {
194 serial.putc(0x55); // EoT 195 serial.write(&c, 1); // EoT
195 cur_gstate = GSTATE_IDLE; 196 cur_gstate = GSTATE_IDLE;
196 set_timer(); // We are IDLE, detach the timeouter 197 set_timer(); // We are IDLE, detach the timeouter
197 return STATE_IDLE; 198 return STATE_IDLE;
198 } 199 }
199 200
210 // this condition, but hey 211 // this condition, but hey
211 #ifdef DEBUG2 212 #ifdef DEBUG2
212 inrx=1; 213 inrx=1;
213 #endif 214 #endif
214 //lled = 1; 215 //lled = 1;
215 val = serial.getc(); 216 //val = serial.getc();
217 serial.read(&val, 1);
216 cur_state = run_state(cur_state, val); 218 cur_state = run_state(cur_state, val);
217 //lled = 0; 219 //lled = 0;
218 #ifdef DEBUG2 220 #ifdef DEBUG2
219 inrx=0; 221 inrx=0;
220 #endif 222 #endif

mercurial