|
|
@@ -15,6 +15,7 @@
|
|
15
|
15
|
#include "bme280_interface.h"
|
|
16
|
16
|
#include "bme280_defs.h"
|
|
17
|
17
|
#include "pin_programming.h"
|
|
|
18
|
+#include "crc.h"
|
|
18
|
19
|
|
|
19
|
20
|
|
|
20
|
21
|
|
|
|
@@ -32,6 +33,10 @@ volatile uint8_t interruptCounter;
|
|
32
|
33
|
volatile uint8_t executionFlag;
|
|
33
|
34
|
|
|
34
|
35
|
|
|
|
36
|
+
|
|
|
37
|
+static PACKET reportPacket;
|
|
|
38
|
+
|
|
|
39
|
+
|
|
35
|
40
|
void Enter_Power_Save_Mode(void);
|
|
36
|
41
|
void Exit_Power_Save_Mode(void);
|
|
37
|
42
|
|
|
|
@@ -64,11 +69,7 @@ ISR(PCINT2_vect)
|
|
64
|
69
|
int main (void)
|
|
65
|
70
|
{
|
|
66
|
71
|
struct bme280_data sensorData;
|
|
67
|
|
- struct DATA_PACKET dataPacket;
|
|
68
|
|
-// uint8_t testRegisterContent = 0x0A;
|
|
69
|
|
-// uint8_t registerContent[5];
|
|
70
|
|
-// char registerContentString[30];
|
|
71
|
|
-// uint8_t lengthRead;
|
|
|
72
|
+ uint16_t crc;
|
|
72
|
73
|
|
|
73
|
74
|
/* Enable the debug LED */
|
|
74
|
75
|
LED_DDR |= (1 << LED_PIN);
|
|
|
@@ -112,11 +113,30 @@ int main (void)
|
|
112
|
113
|
/* Get measurement and send it */
|
|
113
|
114
|
BME280_Get_Measurement(&sensorData);
|
|
114
|
115
|
|
|
115
|
|
- dataPacket.senderId = ownId;
|
|
116
|
|
- dataPacket.temperature = sensorData.temperature;
|
|
117
|
|
- dataPacket.pressure = sensorData.pressure;
|
|
118
|
|
- dataPacket.humidity = sensorData.humidity;
|
|
119
|
|
- NRF24L01_Send_Message((uint8_t*)&dataPacket, sizeof(dataPacket));
|
|
|
116
|
+
|
|
|
117
|
+ memset((uint8_t*)&reportPacket, 0, sizeof(reportPacket)); //Reinitialize the buffer with zeros
|
|
|
118
|
+
|
|
|
119
|
+ reportPacket.senderId = ownId;
|
|
|
120
|
+ //reportPacket.salt; /* TODO */
|
|
|
121
|
+ reportPacket.payload.values.packetIdentifier.elementCount = 3;
|
|
|
122
|
+ reportPacket.payload.values.packetIdentifier.packetType = 0; /* TODO: report type ? */
|
|
|
123
|
+
|
|
|
124
|
+ /* Fill in the payload */
|
|
|
125
|
+ reportPacket.payload.values.valueTypeTemperature = VALUE_TYPE_TEMPERATURE;
|
|
|
126
|
+ reportPacket.payload.values.temperature = sensorData.temperature;
|
|
|
127
|
+ reportPacket.payload.values.valueTypePressure = VALUE_TYPE_PRESSURE;
|
|
|
128
|
+ reportPacket.payload.values.pressure = sensorData.pressure;
|
|
|
129
|
+ reportPacket.payload.values.valueTypeHumidity = VALUE_TYPE_HUMIDITY;
|
|
|
130
|
+ reportPacket.payload.values.humidity = sensorData.humidity;
|
|
|
131
|
+
|
|
|
132
|
+ /* Calculate the CRC */
|
|
|
133
|
+ crc = Calculate_Crc(reportPacket.payload.buffer, PACKET_BUFFER_LENGTH);
|
|
|
134
|
+ reportPacket.crc = crc;
|
|
|
135
|
+
|
|
|
136
|
+ /* Encrypt the packet */
|
|
|
137
|
+ /* TODO */
|
|
|
138
|
+
|
|
|
139
|
+ NRF24L01_Send_Message((uint8_t*)&reportPacket, sizeof(reportPacket));
|
|
120
|
140
|
|
|
121
|
141
|
_delay_ms(100); /* TODO: only for debugging, remove this later! */
|
|
122
|
142
|
LED_PORT &= ~(1 << LED_PIN);
|