uint8_t transmit_header() { uint8_t header[] = "L00THSxxxxxxt00000000000000X"; // Set up header write_2_bytes_to_string(&header[HEADER_LENGTH_PTR], HEADER_LENGTH); memcpy(&header[HEADER_SERIAL_PTR], SERIAL_NUMBER, HEADER_SERIAL_LENGTH); reset_ack(); while(!have_ack()) { write_time_to_string(&header[HEADER_TIME_PTR], global_time()); uart_send_array((uint8_t *)header, HEADER_LENGTH); wait_for(&have_ack, 500); } return SUCCESS; }
uint8_t transmit_data() { if(!have_data_to_transmit()) { return SUCCESS; } if(hold_transmit_flag) return SUCCESS; reset_ack(); uint16_t end_ptr = write_index; while (have_data_to_transmit()) { uart_send_array(&output_buffer[read_index], end_ptr-read_index); if(wait_for(&have_ack, 500)) { read_index = end_ptr; } else { return FAILURE; } end_ptr = write_index; } reset_output_buffer(); return SUCCESS; }
/** * reset shutdown ack flag for all connected clients * * @param [in,out] h list of clients * * @return E_ERR_SUCCESS if successful */ e_mmgr_errors_t clients_reset_ack_shtdwn(clients_hdle_t *h) { return reset_ack(h, E_CNX_MODEM_SHUTDOWN); }
/** * reset cold ack flag for all connected clients * * @param [in,out] h list of clients * * @return E_ERR_SUCCESS if successful */ e_mmgr_errors_t clients_reset_ack_cold(clients_hdle_t *h) { return reset_ack(h, E_CNX_COLD_RESET); }