示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
/**
 * 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);
}
示例#4
0
/**
 * 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);
}