Midnight Sun Firmware
Loading...
Searching...
No Matches
fota_datagram.h
1#pragma once
2
3/************************************************************************************************
4 * @file fota_datagram.h
5 *
6 * @brief Fota Datagram Header File
7 *
8 * @date 2025-04-30
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14#include <stdint.h>
15
16/* Inter-component Headers */
17
18/* Intra-component Headers */
19#include "fota_packet.h"
20
28#define FOTA_MAX_DATAGRAM_SIZE (8U * 256U)
29
31#define FOTA_MAX_PACKETS_PER_DATAGRAM ((FOTA_MAX_DATAGRAM_SIZE / FOTA_PACKET_PAYLOAD_SIZE) + 1U)
32
36typedef enum {
43
47typedef struct {
49 uint32_t datagram_id;
50 uint32_t total_length;
51 uint16_t num_packets;
52 uint32_t crc32;
54
58typedef struct {
60 uint8_t data[FOTA_MAX_DATAGRAM_SIZE];
61 bool packet_received[FOTA_MAX_PACKETS_PER_DATAGRAM];
65
75FotaError fota_datagram_init(FotaDatagram *datagram, FotaDatagramType type, uint32_t datagram_id, uint8_t *data, uint32_t length);
76
85FotaError fota_datagram_to_packets(FotaDatagram *datagram, FotaPacket *packets, uint16_t *num_packets, uint16_t max_packets);
86
94
102
109
FotaDatagramType
Datagram types corresponding to different FOTA operations.
Definition: fota_datagram.h:36
bool fota_datagram_is_complete(FotaDatagram *datagram)
Check if a datagram has been completely received.
Definition: fota_datagram.c:29
FotaError fota_datagram_to_packets(FotaDatagram *datagram, FotaPacket *packets, uint16_t *num_packets, uint16_t max_packets)
Fragment a datagram into packets for transmission.
Definition: fota_datagram.c:21
FotaError fota_datagram_process_packet(FotaDatagram *datagram, FotaPacket *packet)
Process a received packet and incorporate it into a datagram.
Definition: fota_datagram.c:25
#define FOTA_MAX_DATAGRAM_SIZE
Maximum supported datagram size (2KB)
Definition: fota_datagram.h:28
FotaError fota_datagram_verify(FotaDatagram *datagram)
Verify the integrity of a complete datagram.
Definition: fota_datagram.c:33
FotaError fota_datagram_init(FotaDatagram *datagram, FotaDatagramType type, uint32_t datagram_id, uint8_t *data, uint32_t length)
Initialize a datagram structure.
Definition: fota_datagram.c:17
#define FOTA_MAX_PACKETS_PER_DATAGRAM
Maximum number of packets that can make up a datagram (8 data + 1 Header)
Definition: fota_datagram.h:31
FotaError
FOTA Error code definitions.
Definition: fota_error.h:27
@ FOTA_DATAGRAM_TYPE_UPDATE_REQUEST
Definition: fota_datagram.h:39
@ FOTA_DATAGRAM_TYPE_UPDATE_RESPONSE
Definition: fota_datagram.h:40
@ FOTA_DATAGRAM_TYPE_VERIFICATION
Definition: fota_datagram.h:41
@ FOTA_DATAGRAM_TYPE_FIRMWARE_METADATA
Definition: fota_datagram.h:37
@ FOTA_DATAGRAM_TYPE_FIRMWARE_CHUNK
Definition: fota_datagram.h:38
Structure representing the datagram header.
Definition: fota_datagram.h:47
uint32_t datagram_id
Definition: fota_datagram.h:49
uint32_t crc32
Definition: fota_datagram.h:52
uint32_t total_length
Definition: fota_datagram.h:50
uint16_t num_packets
Definition: fota_datagram.h:51
FotaDatagramType type
Definition: fota_datagram.h:48
Structure representing datagram.
Definition: fota_datagram.h:58
uint16_t packets_received
Definition: fota_datagram.h:62
bool is_complete
Definition: fota_datagram.h:63
FotaDatagramHeader header
Definition: fota_datagram.h:59
FOTA Packet structure.
Definition: fota_packet.h:68