diff options
| author | Aditya Naik | 2020-03-25 17:25:23 -0400 |
|---|---|---|
| committer | Aditya Naik | 2020-03-25 17:25:23 -0400 |
| commit | b5b5ad6fb82b45fa240df1873e96ec4994925f08 (patch) | |
| tree | b988b991217e774d1048d6924f4ae2f3380fb9ab | |
| parent | f8cac49d3793c812226137c08153e0f8aceeed81 (diff) | |
Master work for MDR CTS and MDR work (not decoding yet)
| -rw-r--r-- | Src/main.c | 42 |
1 files changed, 41 insertions, 1 deletions
@@ -183,7 +183,8 @@ int main(void) HAL_UART_Transmit(&huart1, term, 2, 100);
memset(debug_buf, 0, 128);
#endif /* TESTING_ENABLE */
-
+
+ uint32_t MDR_len = 0;
pb_istream_t MDR_ACK_istream = pb_istream_from_buffer(MDR_ACK_buf, 2);
s2m_MDR_req_ACK MDR_ACK;
if (!pb_decode(&MDR_ACK_istream, s2m_MDR_req_ACK_fields, &MDR_ACK)) {
@@ -193,6 +194,7 @@ int main(void) #endif /* DEBUG_ENABLE */
}
else {
+ MDR_len = MDR_ACK.MDR_res_length;
#ifdef TESTING_ENABLE
sprintf((char*)debug_buf, "Got MDR message length: %ld\r\n", MDR_ACK.MDR_res_length);
HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100);
@@ -200,6 +202,44 @@ int main(void) #endif /* TESTING_ENABLE */
}
+ uint8_t MDR_CTS_buf[8];
+ m2s_MDR_res_CTS MDR_CTS;
+ pb_ostream_t MDR_CTS_ostream = pb_ostream_from_buffer(MDR_CTS_buf, sizeof(MDR_CTS_buf));
+
+ MDR_CTS.timeout = 1000;
+ if (!pb_encode(&MDR_CTS_ostream, m2s_MDR_res_CTS_fields, &MDR_CTS)) {
+#ifdef DEBUG_ENABLE
+ sprintf((char*)debug_buf, "MDR encoding error\r\n");
+ HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100);
+ memset(debug_buf, 0, 128);
+#endif
+ }
+ else {
+ if (HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)I2C_ADDRESS, (uint8_t*)MDR_CTS_buf, m2s_MDR_res_CTS_size, 10000) != HAL_OK) {
+#ifdef DEBUG_ENABLE
+ sprintf((char*)debug_buf, "Unable to send MDR CTS. I2C error: %ld\r\n", HAL_I2C_GetError(&hi2c1));
+ HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100);
+ memset(debug_buf, 0, 128);
+#endif /* DEBUG_ENABLE */
+ }
+ HAL_GPIO_TogglePin(led_GPIO_Port, led_Pin);
+ }
+
+ uint8_t MDR_buf[256];
+ AF_error_counter = 0;
+ while (HAL_I2C_Master_Receive(&hi2c1, (uint8_t)I2C_ADDRESS, (uint8_t*)MDR_buf, MDR_len, 100) != HAL_OK) {
+ if (HAL_I2C_GetError(&hi2c1) != HAL_I2C_ERROR_AF) {
+#ifdef DEBUG_ENABLE
+ sprintf((char*)debug_buf, "Unable to get MDR. I2C error: %ld\r\n", HAL_I2C_GetError(&hi2c1));
+ HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100);
+ memset(debug_buf, 0, 128);
+#endif /* DEBUG_ENABLE */
+ break;
+ }
+ if (++AF_error_counter > 1000) {
+ break;
+ }
+ }
#else /* MASTER */
uint8_t buffer[128], debug_buf[128], term[]="\r\n";
|
