diff options
Diffstat (limited to 'src/main-data.c')
| -rw-r--r-- | src/main-data.c | 146 |
1 files changed, 1 insertions, 145 deletions
diff --git a/src/main-data.c b/src/main-data.c index 46b0f36..911a901 100644 --- a/src/main-data.c +++ b/src/main-data.c @@ -100,9 +100,7 @@ int main(void) #endif /* MASTER */ #endif /* TESTING_ENABLE */ -#ifdef MASTER - /* Add MDR */ - + /* Add MDR */ uint8_t dev_idx = GET_IDX_FROM_ADDR(I2C_ADDRESS); subs_info[dev_idx] = malloc(sizeof(subscription_info_t)); subs_info[dev_idx]->mod_idx = subs_info[dev_idx]->entity_idx = @@ -132,148 +130,6 @@ int main(void) routing(); /* HAL_Delay(500); */ /* } */ - -#else /* Slave code*/ - { - while (1) { - uint8_t SOR_buf[m2s_SOR_size] = {0}, debug_buf[128]; - if (HAL_I2C_Slave_Receive(&hi2c1, (uint8_t*)SOR_buf, m2s_SOR_size, 10000) != HAL_OK) { - sprintf((char*)debug_buf, "Failed to get SOR\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - } - else { - sprintf((char*)debug_buf, "Got SOR\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - } - m2s_SOR SOR_message; - pb_istream_t SOR_istream = pb_istream_from_buffer(SOR_buf, 2); - if (!pb_decode(&SOR_istream, m2s_SOR_fields, &SOR_message)) { - sprintf((char*)debug_buf, "SOR decode error\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - } - else { - sprintf((char*)debug_buf, "SOR decoded; code: %ld\r\n", SOR_message.SOR_code); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - } - - if (SOR_message.SOR_code == 1) { - uint8_t data_buf[128]; - size_t data_enc_size; - s2m_data data; - data.datapoints.funcs.encode = encode_datapoint_callback; - pb_ostream_t data_ostream = pb_ostream_from_buffer(data_buf, sizeof(data_buf)); - if (!pb_encode(&data_ostream, s2m_data_fields, &data)) { - sprintf((char*)debug_buf, "Data encoding error\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - Error_Handler(); - } - data_enc_size = data_ostream.bytes_written; - - s2m_DOC doc = s2m_DOC_init_zero; - uint8_t doc_buf[s2m_DOC_size]; - doc.DOC_code = 5; - doc.tx_length = data_enc_size; - pb_ostream_t doc_ostream = pb_ostream_from_buffer(doc_buf, 4); - - if (!pb_encode(&doc_ostream, s2m_DOC_fields, &doc)) { - sprintf((char*)debug_buf, "DOC encoding error\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - Error_Handler(); - } - - sprintf((char*)debug_buf, "s2m_DOC encoded length: %d\r\n", doc_ostream.bytes_written); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - - if (HAL_I2C_Slave_Transmit(&hi2c1, (uint8_t*)doc_buf, 4, 10000) != HAL_OK) { - sprintf((char*)debug_buf, "DOC I2C send error: %ld\r\n", HAL_I2C_GetError(&hi2c1)); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - Error_Handler(); - } - else { - sprintf((char*)debug_buf, "SENT DOC\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - } - - uint8_t CTS_buf[8]; - - if (HAL_I2C_Slave_Receive(&hi2c1, (uint8_t*)CTS_buf, 2, 10000) != HAL_OK) { - sprintf((char*)debug_buf, "Failed to get CTS: %ld\r\n", HAL_I2C_GetError(&hi2c1)); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - Error_Handler(); - } - else { - sprintf((char*)debug_buf, "Got CTS\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - } - - if (HAL_I2C_Slave_Transmit(&hi2c1, (uint8_t*)data_buf, data_enc_size, 10000) != HAL_OK) { - sprintf((char*)debug_buf, "Data I2C send error: %ld\r\n", HAL_I2C_GetError(&hi2c1)); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - Error_Handler(); - } - else { - sprintf((char*)debug_buf, "SENT DATA\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - } - } - else if (SOR_message.SOR_code == 2) { - uint8_t CTS_buf[] = {0x0, 0x1}; - uint8_t len_buf[4], *MDR_buf, *data_buf; - /* _datapoint datapoints[16]; */ - - HAL_I2C_Slave_Transmit(&hi2c1, CTS_buf, 2, 10000); - sprintf((char*)debug_buf, "Sent CTS\r\n"); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - - HAL_I2C_Slave_Receive(&hi2c1, len_buf, 4, 1000); - - uint16_t MDR_len = len_buf[1]+(len_buf[0]<<8); - MDR_buf = malloc(MDR_len); - uint16_t data_len = len_buf[3]+(len_buf[2]<<8); - data_buf = malloc(data_len); - - sprintf((char*)debug_buf, "Got lengths. MDR: %d, data: %d\r\n", MDR_len, data_len); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - - HAL_I2C_Slave_Transmit(&hi2c1, CTS_buf, 2, 10000); - HAL_I2C_Slave_Receive(&hi2c1, MDR_buf, MDR_len, 10000); - HAL_I2C_Slave_Receive(&hi2c1, data_buf, data_len, 10000); - - _datapoint datapoint_message; - s2m_MDR_response MDR_message; - pb_istream_t MDR_istream = pb_istream_from_buffer(MDR_buf, MDR_len); - pb_istream_t data_istream = pb_istream_from_buffer(data_buf, data_len); - - pb_decode(&MDR_istream, s2m_MDR_response_fields, &MDR_message); - pb_decode(&data_istream, _datapoint_fields, &datapoint_message); - - sprintf((char*)debug_buf, "Got data from %ld, running version %f\r\n\tdata 0: %f\r\n", MDR_message.module_id, MDR_message.MDR_version, datapoint_message.data); - HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100); - memset(debug_buf, 0, 128); - } - } - } -#endif /* MASTER */ - - while (1) - { - - } } hs_status_t handshake(uint32_t i2c_addr) |
