Files
MCRLController/server.c
2026-02-20 20:39:17 +01:00

52 lines
1.2 KiB
C

#include <stdio.h>
#include "pico/stdlib.h"
#include "ble_server.h"
#include "mpu_handler.h"
#include "gps_handler.h"
#define GENERIC_MESSAGE_SEND_INTERVAL_MS 100
static repeating_timer_t timer;
static char ble_buffer[64];
static MPU_Data_t mpu_values;
static GPS_Data_t gps_values;
bool periodic_message_timer_callback(repeating_timer_t *rt) {
(void)rt;
// Data Format: S,AccX,AccY,AccZ,Lat,Lon,Fix
snprintf(ble_buffer, sizeof(ble_buffer),
"S,%.2f,%.2f,%.2f,%.4f,%.4f,%d",
mpu_values.ax, mpu_values.ay, mpu_values.az,
gps_values.latitude, gps_values.longitude,
gps_values.has_fix ? 1 : 0);
send_message(ble_buffer);
return true;
}
int main() {
stdio_init_all();
sleep_ms(1000);
start_server();
mpu_init();
mpu_calibrate();
gps_init();
if (!add_repeating_timer_ms(GENERIC_MESSAGE_SEND_INTERVAL_MS, periodic_message_timer_callback, NULL, &timer)) {
printf("Failed to start timer!\n");
}
while (true) {
mpu_read_data(&mpu_values);
gps_update(&gps_values);
sleep_ms(50);
}
cancel_repeating_timer(&timer);
stop_server();
return 0;
}