From 1633d3e78d8a87a5430f668376f85f3b7dce516a Mon Sep 17 00:00:00 2001 From: Rihards Skuja Date: Tue, 23 Jan 2018 23:22:14 +0200 Subject: [PATCH] Allocate memory for data packets on stack rather than heap --- base_station/src/main.c | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/base_station/src/main.c b/base_station/src/main.c index b61debb..43f0d67 100644 --- a/base_station/src/main.c +++ b/base_station/src/main.c @@ -11,16 +11,14 @@ #include "debug.h" #endif /* DEBUG */ +uint8_t rx_raw[sizeof(data_packet_t)]; +data_packet_t rx_data; + int main(void) { - uint8_t *rx_raw; - data_packet_t *rx_data; - // Data packet is too large, should split in multiple packets if (sizeof(data_packet_t) > MAX_PAYLOAD_SIZE) return R_PACKAGE_SIZE; - rx_data = malloc(sizeof(data_packet_t)); - rx_raw = malloc(sizeof(data_packet_t)); init_leds(); nrf24_init(); @@ -29,41 +27,23 @@ int main(void) nrf24_tx_address(node_mac); nrf24_rx_address(base_mac); - // Use green LED as power LED - // TODO: need all LEDs for debugging, will use as power when UART debugger - // will arrive - /* SET(LED_PORT, LED_GREEN_BIT); */ - - // Set up TIMER1 - TCNT1 = 0; - SET(TCCR1B, CS12); // Prescaler = 256 - SET(TIMSK1, TOIE1); // Enable overflow interrupts - ICR1 = 15625; // Interrupt after 0.25s - - sei(); - while (1) { if (nrf24_dataReady()) { memset(rx_raw, 0, sizeof(data_packet_t)); nrf24_getData(rx_raw); - memcpy(rx_data, rx_raw, sizeof(data_packet_t)); + memcpy(&rx_data, rx_raw, sizeof(data_packet_t)); - if (rx_data->distance < 10 && rx_data->distance >= 0) + if (rx_data.distance < 10) SET(LED_PORT, LED_BLUE_BIT); else CLR(LED_PORT, LED_BLUE_BIT); - if (rx_data->temp > 23) + if (rx_data.temp > 22) SET(LED_PORT, LED_GREEN_BIT); else CLR(LED_PORT, LED_GREEN_BIT); } } - cli(); - - free(rx_data); - free(rx_raw); - return 0; }