Loading...
Searching...
No Matches
packets.c
1/***********************************************************************************
2 * @file packets.c *
3 * @author Matt Ricci *
4 * @brief . *
5 * *
6 ***********************************************************************************/
7
8#include "packets.h"
9
10#include "string.h"
11
12SX1272_Packet SX1272_AVData(
13 uint8_t id,
14 uint8_t currentState,
15 uint8_t *lAccelData,
16 uint8_t *hAccelData,
17 uint8_t lenAccel,
18 uint8_t *gyroData,
19 uint8_t lenGyro,
20 float altitude,
21 float velocity
22) {
23 SX1272_Packet msg;
24
25 // Convert altitude float to byte array
26 union {
27 float f;
28 uint8_t b[4];
29 } a;
30 a.f = altitude;
31
32 // Convert velocity float to byte array
33 union {
34 float f;
35 uint8_t b[4];
36 } v;
37 v.f = velocity;
38
39 int idx = 0;
40 // Append to struct data array
41 msg.id = id;
42 msg.data[idx++] = currentState;
43 memcpy(&msg.data[idx], lAccelData, lenAccel);
44 memcpy(&msg.data[idx += lenAccel], hAccelData, lenAccel);
45 memcpy(&msg.data[idx += lenAccel], gyroData, lenGyro);
46 memcpy(&msg.data[idx += lenGyro], a.b, sizeof(float));
47 memcpy(&msg.data[idx += sizeof(float)], v.b, sizeof(float));
48
49 return msg;
50}
51
52SX1272_Packet SX1272_GPSData(
53 uint8_t id,
54 char *latitude,
55 char *longitude,
56 uint8_t flags
57) {
58 SX1272_Packet msg;
59
60 int idx = 0;
61 // Append to struct data array
62 msg.id = id;
63 memcpy(&msg.data[idx], latitude, 15);
64 memcpy(&msg.data[idx += 15], longitude, 15);
65 msg.data[idx += 15] = flags;
66
67 return msg;
68}
69
70SX1272_Packet SX1272_PayloadData(
71 uint8_t id,
72 uint8_t state,
73 uint8_t *accelData,
74 uint8_t lenAccelData
75) {
76 SX1272_Packet msg;
77
78 int idx = 0;
79 // Append to struct data array
80 msg.id = id;
81 msg.data[idx++] = state;
82 memcpy(&msg.data[idx + lenAccelData], accelData, lenAccelData);
83
84 return msg;
85}
uint8_t id
Packet header ID.
Definition sx1272.h:125
uint8_t data[LORA_MSG_PAYLOAD_LENGTH]
Packet payload.
Definition sx1272.h:126