Myriota Flex SDK 2.5.0
Loading...
Searching...
No Matches
Schedule Message Example

This example demonstrates how to schedule messages for satellite transmission. The SendMessage job will schedule MESSAGES_PER_DAY messages per day. The FLEX_MessageSchedule function pushes each message to the queue. The return value of FLEX_MessageSchedule indicates the load of the queue. A return value greater than one indicates that the queue is overloaded and that messages may begin to be dropped. The message will be transmitted when a satellite is overhead and the satellite passes can be checked from Access Times in Device Manager.

#include <stdio.h>
#include "flex.h"
#define APPLICATION_NAME "Schedule Message Example"
// Note: Modify this according to the application requirements.
#define MESSAGES_PER_DAY 4
typedef struct {
uint16_t sequence_number;
uint32_t time;
// ADD YOUR PARAMETERS HERE
} __attribute__((packed)) message;
static time_t SendMessage(void) {
static uint16_t sequence_number = 0;
message message;
message.sequence_number = sequence_number++;
message.time = FLEX_TimeGet();
// POPULATE YOUR DATA HERE
// Schedule messages for satellite transmission
FLEX_MessageSchedule((void *)&message, sizeof(message));
printf("Scheduled message: %u %lu\n", message.sequence_number, message.time);
return (FLEX_TimeGet() + 24 * 3600 / MESSAGES_PER_DAY);
}
void FLEX_AppInit() {
printf("%s\n", APPLICATION_NAME);
FLEX_JobSchedule(SendMessage, FLEX_ASAP());
}