equal
deleted
inserted
replaced
114 |
114 |
115 uint16_t control; |
115 uint16_t control; |
116 } serial_device_t; |
116 } serial_device_t; |
117 |
117 |
118 static serial_device_t *ser = NULL; |
118 static serial_device_t *ser = NULL; |
119 static char tx_data[] = "ATZ\r\n"; |
|
120 static off_t tx_off = 0; |
|
121 static ec_tty_t *tty = NULL; |
119 static ec_tty_t *tty = NULL; |
122 |
120 |
123 /*****************************************************************************/ |
121 /*****************************************************************************/ |
124 |
122 |
125 /* Slave 1, "EL6002" |
123 /* Slave 1, "EL6002" |
281 |
279 |
282 /* Send data */ |
280 /* Send data */ |
283 |
281 |
284 tx_accepted_toggle = status & 0x0001; |
282 tx_accepted_toggle = status & 0x0001; |
285 if (tx_accepted_toggle != ser->tx_accepted_toggle) { // ready |
283 if (tx_accepted_toggle != ser->tx_accepted_toggle) { // ready |
286 // send new data |
284 ser->tx_data_size = |
287 size_t rem = sizeof(tx_data) - tx_off; |
285 ectty_tx_data(tty, ser->tx_data, ser->max_tx_data_size); |
288 if (rem > 0) { |
286 if (ser->tx_data_size) { |
289 if (rem < ser->max_tx_data_size) { |
|
290 ser->tx_data_size = rem; |
|
291 } else { |
|
292 ser->tx_data_size = ser->max_tx_data_size; |
|
293 } |
|
294 printk(KERN_INFO PFX "Sending %u bytes.\n", ser->tx_data_size); |
287 printk(KERN_INFO PFX "Sending %u bytes.\n", ser->tx_data_size); |
295 memcpy(ser->tx_data, tx_data, ser->tx_data_size); |
|
296 tx_off += ser->tx_data_size; |
|
297 ser->tx_request_toggle = !ser->tx_request_toggle; |
288 ser->tx_request_toggle = !ser->tx_request_toggle; |
298 ser->tx_accepted_toggle = tx_accepted_toggle; |
289 ser->tx_accepted_toggle = tx_accepted_toggle; |
299 } |
290 } |
300 } |
291 } |
301 |
292 |
395 } else { // do this at 1 Hz |
386 } else { // do this at 1 Hz |
396 counter = FREQUENCY; |
387 counter = FREQUENCY; |
397 |
388 |
398 // check for master state (optional) |
389 // check for master state (optional) |
399 check_master_state(); |
390 check_master_state(); |
400 |
|
401 tx_off = 0; |
|
402 } |
391 } |
403 |
392 |
404 serial_run(ser, EC_READ_U16(domain1_pd + off_status), domain1_pd + off_rx); |
393 serial_run(ser, EC_READ_U16(domain1_pd + off_status), domain1_pd + off_rx); |
405 EC_WRITE_U16(domain1_pd + off_ctrl, ser->control); |
394 EC_WRITE_U16(domain1_pd + off_ctrl, ser->control); |
406 memcpy(domain1_pd + off_tx, ser->tx_data, 22); |
395 memcpy(domain1_pd + off_tx, ser->tx_data, 22); |