Data Logger BLE Cellular Board
Loading...
Searching...
No Matches
jfet_common.h
Go to the documentation of this file.
1/*!
2 * \file jfet_common.h
3 *
4 * \brief common struct, enum, externs, prototypes
5 *
6 * \copyright J Factor Embedded Technologies LLC. 2023
7 * \copyright TJM Embedded Software LLC. 2023
8 * \author T. J. Mulrooney
9 *
10 */
11/*
12 * All Rights Reserved
13 * UNPUBLISHED, LICENSED SOFTWARE.
14 *
15 * CONFIDENTIAL AND PROPRIETARY INFORMATION
16 * WHICH IS THE PROPERTY OF J-Factor Embedded Technologies.
17 *
18 */
19#ifndef JFET_COMMON_H_
20#define JFET_COMMON_H_
21
22#include "bme68x.h"
23#include "jfet_files/HDC2080.h"
24#include <stdio.h>
25#include <stdlib.h>
26#include <string.h>
27#include <zephyr/drivers/gpio.h>
28#include <zephyr/drivers/spi.h>
29
30#define VERSION_MAJOR 0
31#define VERSION_MINOR 15
32
33#define VERSION_DATE "BLE Sensor 07/20/26"
34#define BOARD_NAME "BLE Sensor Prototype"
35
36#define VERSION_DATE_EXT1 " (Bd 1.0 UART0)"
37#define VERSION_DATE_EXT2 " (Bd 1.0 No UART0)"
38#define VERSION_DATE_EXT3 " (Bd 1.0 NO SERIAL)"
39#define BOARD_NAME_EXT " V1.0 (nRF52832)"
40
41#define FALSE 0
42#define TRUE 1
43
44#define DEFAULT_DUTYCYCLE TEN_SECONDS
45
46#define SPI_BUF_SIZE 128
47#define SPI_SLAVE 0
48#define SLOW_FREQ 150000
49#define FAST_FREQ 16000000
50
51#define DATA_LENGTH 20
52
53#define STR(x) #x
54#define EXPAND_AND_STR(x) STR(x)
55
56#define LOWTEMPENABLE 0x01
57#define LOWTEMPACTIVE 0x02
58#define HIGHTEMPENABLE 0x04
59#define HIGHTEMPACTIVE 0x08
60#define LOWHUMIDITYENABLE 0x01
61#define LOWHUMIDITYACTIVE 0x02
62#define HIGHHUMIDITYENABLE 0x04
63#define HIGHHUMIDITYACTIVE 0x08
64
65/* uncomment to use SW2 to start BLE advertising */
66// #define SW2STARTSADVERTISING 1
67
74
75#define MAX_PARAMETERS 3
76#define MAX_FLASH_BYTES 0x200
77#define FLASHPARAMETERSTART 0
78#define FLASHBLESTART (FLASHPARAMETERSTART + 0x10)
79#define FLASHPARAMETERKEY 0X12345678
80// #define MAX_NUMBER_BLE_PACKETS 2000
81// #define MAX_NUMBER_BLE_PACKETS 10
82#define MAX_NUMBER_BLE_PACKETS 10
83
84/*!
85 * \brief Flash parameters structure
86 *
87 */
88/*!
89 */
90typedef struct {
91 uint32_t key; //!< 0x12345678 valid key
92 // uint8_t tempUnitsCentigrade; //!< 1=C, 0=F
93 // uint8_t dateSet; //!< 1 = date set, 0 = date not set
94 // int8_t timeZone; //!< time zone relative to GMT/UTC
95 // uint8_t alarmsEnabled; //!< 1 = global alarms enabled, 0 = global alarms
96 // disabled uint8_t gpsEnable; //!< 1 = enable GPS, 0 = disable GPS when
97 // connecting to cloud uint8_t gpsExternal; //!< 1 = external GPS, 0 = internal
98 // GPS when connecting to cloud uint8_t sw2; //!< switch 2 setting
99 uint8_t silent; //!< = 0 running messages on, = 1 running messages off
100 uint32_t
101 dutyCycle; //!< interval in seconds to send Sensor data to the cloud
102 // uint32_t rsrpCycle; //!< interval in seconds to send RSRP data to the
103 // cloud uint32_t gpsFixCheck; //!< interval in seconds to get a new GPS fix
104 char sensorID[7]; //!< last 6 bytes of MAC address
105 char sensorName[40]; //!< sensor name
106 char customer[40]; //!< cutome name for this sensor
107 char location[40]; //!< location of this sensor
108 char group[40]; //!< group for this sensor
109 // char distributor[40]; //!< distributor for this sensor
110 // char clientID[20]; //!< client ID this sensor
111 // tempAlarmStruct tempAlarms[MAX_NUMBER_TEMPERATURE_SENSORS]; //!< temperature alarm structures
112 // uint16_t tempAlarmValid; //!< time for a temp alarm to be valid
113 // uint16_t tempAlarmCheck; //!< time to check for alarms in seconds
114 // humidityAlarmStruct humidityAlarms[MAX_NUMBER_HUMIDITY_SENSORS]; //!< humidity alarm structures
115 // uint16_t humidityAlarmValid; //!< time for a humidity alarm to be valid
116 // uint16_t humidityAlarmCheck; //!< time to check for alarms in seconds
117 // uint16_t nextSavedRead; //!< page address for next read JSON packet
118 uint16_t nextSavedRead; //!< page address of next write JSON packet
119 uint16_t nextSavedWrite; //!< page address of next write JSON packet
120 uint16_t savedCount; //!< number of saved JSON packets
121 // uint8_t lowPower; //!< low power mode enabled
122 uint8_t manualTrigger; //!< disable HDC2080 interrups and trigger/read when datetime BLE command seen
123 uint8_t ignoreBME688; //!< disable BME688 anywhere in the code for lower power consumption
124 // char edrx_param[5]; //!< EDRX param
125 // char ptw_param[5]; //!< EDRX PWT param
126 // char psm_param_rat[9]; //!< PSM param
127 // char psm_param_rptau[9]; //!< PSM Tau param
128 // uint8_t modenPMEnable; //!< 1 = enable MODE_nPM, 0 = disable MODE_nPM
129 // int16_t offsetAM2315; //!< AM2315 offset degrees C/1000
130 // pressureAlarmStruct pressureAlarms[MAX_NUMBER_PRESSURE_SENSORS]; //!< humidity alarm structures
131 // uint16_t pressureAlarmValid; //!< time for a pressure alarm to be valid
132 // uint16_t pressureAlarmCheck; //!< time to check for alarms in seconds
133 // powerAlarmStruct powerAlarms[MAX_NUMBER_POWER_SENSORS]; //!< Power alarm structures
134 // uint16_t powerAlarmValid; //!< time for a power alarm to be valid
135 // uint16_t powerAlarmCheck; //!< time to check for alarms in seconds
136 // int16_t offsetAM2315Humidity; //!< AM2315 offset %/1000
137 // int16_t offsetMSPPressure; //!< MSP Pressure offset %/1000
138 // ezoecAlarmStruct ezoecAlarms[MAX_NUMBER_EZO_SENSORS]; //!< humidity alarm structures
139 // uint16_t ezoecAlarmValid; //!< time for a ezoec alarm to be valid
140 // uint16_t ezoecAlarmCheck; //!< time to check for alarms in seconds
141 // int16_t offsetEZORTD; //!< RTD offset degrees C/1000
142 // uint8_t sw1; //!< switch 1 setting
143 // uint8_t cipu1; //!< CI_PU1 setting
144 // uint8_t en12v0; //!< EN12V0 setting
145 // uint8_t en24v0; //!< EN24V0 setting
146 // uint8_t en5v0; //!< EN5V0 setting
147 // uint8_t tagoio; //!< TagoIO setting
148 uint8_t nouart0; //!< no UART0 setting
149 // char sysRebootReason[30]; //!< reason that firmware issued a sys_reboot
150 // uint8_t shortJSON; //!< send short JSON packet
151 // uint8_t adcConnected; //!< state of ADC connection
152 // uint8_t cipd1; //!< CI_PD1 setting
153 // uint8_t cires; //!< CI_RES setting
154 // uint8_t rs485xcvren; //!< RS485XCVREN setting
155
157
158/* prototypes */
159// void myPrintk(char *str);
160int myPrintk(char *restrict fmt, ...);
161// void myPrintkW(char *str);
162int myPrintkW(char *restrict fmt, ...);
163// void myPrintkI(char *str);
164int myPrintkI(char *restrict fmt, ...);
165// void myPrintkS(char *str);
166int myPrintkS(char *restrict fmt, ...);
167// void myPrintkE(char *str);
168int myPrintkE(char *restrict fmt, ...);
169int init_i2c();
170void hdc2080_rdy_seen(const struct device *dev, struct gpio_callback *cb, uint32_t pins);
171void sw2_seen(const struct device *dev, struct gpio_callback *cb, uint32_t pins);
172uint8_t bleCommand(uint8_t *data);
173int getCmd(uint8_t *line);
174int initHDC2080(void);
175int initW25Q64JV(void);
176int initBME688(void);
177void readNVFlashxID(uint8_t *flashId);
178void readNVFlashxStatus(uint8_t *flashStatus);
179void flashxErasePage(uint32_t address);
180void flashxEraseBlock1(uint32_t address);
181void flashxEraseBlock2(uint32_t address);
182void flashxEraseSector(uint32_t address);
183void flashxErase(void);
184void flashxReadPage(uint32_t address, uint8_t *flashRead);
185void flashxWritePage(uint32_t page, uint32_t address, uint8_t *data, uint16_t count);
186void flashxFillPage(uint32_t address, uint16_t data);
187void flashxClearParameters(void);
188void setFlashxParameters(uint8_t display);
189void displayFlashxParameters(void);
190void rescan(void);
191void executeCmd(char *line);
192int8_t getCLICmd(char *line);
193int adc_sample(void);
194void getFlashparameters(void);
195void int64_to_string(int64_t num, char *str);
196
197/* used to force count samples */
198int getBME688Data(int count, uint8_t quiet);
199
200/* externals */
201extern uint16_t manfID;
202extern uint16_t deviceID;
203extern const struct device *const i2c_dev;
204extern const struct device *const uart0_dev;
205extern float hdcTemp;
206extern float hdcHumidity;
207extern char *cmdLineParameter[];
208extern uint8_t numParameters;
209extern char devIDStr[];
210extern int ret;
211extern uint8_t buffer_tx[];
212extern uint8_t buffer_rx[];
213extern struct spi_buf tx_bufs[];
214extern struct spi_buf rx_bufs[];
215extern struct spi_config spi_cfg1;
216extern struct spi_config spi_cfg2;
217extern const struct spi_buf_set tx;
218extern const struct spi_buf_set rx;
219extern const struct spi_cs_control spi_cs1;
220extern const struct spi_cs_control spi_cs2;
221extern const struct gpio_dt_spec spics1n;
222extern const struct gpio_dt_spec spics2n;
223extern const struct device *const spi_dev;
224extern uint32_t sensorTypePresentAll;
225extern float adc_voltage[];
226extern uint8_t flashReadIn[];
227extern const struct gpio_dt_spec baten;
228extern struct k_sem hdc_rdy_seen;
229extern struct k_sem uart_rx_disabled_sem;
230extern char resetCause[];
231extern char myStr[];
233extern uint8_t tmpData[];
234extern uint32_t bleIndex;
235extern uint8_t stopWDTFeed;
236extern uint8_t hdcMinutes;
237extern struct bme68x_dev bme688_dev;
238extern struct bme68x_data BME688Data;
239extern char cliCMD[];
240extern uint8_t sendingDeviceInfo;
241extern long long gatewayDateTime;
242extern char gatewayEpoch[];
243
244#endif /* JFET_COMMON_H_ */
BME68X Sensor API header file.
uint8_t flashReadIn[MAX_FLASH_BYTES]
Definition globals.c:32
struct spi_config spi_cfg1
SPI configuration.
Definition globals.c:91
struct spi_buf tx_bufs[]
SPI TX buffer structure.
Definition globals.c:111
const struct spi_buf_set rx
SPI RX buffer structure.
Definition globals.c:127
const struct spi_cs_control spi_cs2
Definition globals.c:86
float hdcHumidity
Definition globals.c:26
uint8_t buffer_rx[SPI_BUF_SIZE+8]
SPI receive buffer0.
Definition globals.c:43
const struct device *const spi_dev
Definition globals.c:79
flashParametersStruct flashParameters
working valuses of flash parameters in RAM
Definition globals.c:35
char cliCMD[40]
Definition globals.c:45
char gatewayEpoch[20]
Definition globals.c:48
uint32_t bleIndex
Definition globals.c:37
uint16_t manfID
Definition globals.c:23
uint32_t sensorTypePresentAll
Definition globals.c:30
float adc_voltage[2]
last ADC voltage read [0] battery
Definition globals.c:31
int ret
Definition globals.c:41
uint16_t deviceID
Definition globals.c:24
const struct gpio_dt_spec spics2n
Definition globals.c:63
struct spi_config spi_cfg2
SPI configuration.
Definition globals.c:101
uint8_t buffer_tx[SPI_BUF_SIZE+8]
SPI transmit buffer.
Definition globals.c:42
uint8_t sendingDeviceInfo
flag to indicate sending device info in BLE packet instead of sensor data
Definition globals.c:46
uint8_t tmpData[256]
Definition globals.c:36
uint8_t stopWDTFeed
stop Watch Dog Timer feed causing a WDT interrupt for testing
Definition globals.c:38
long long gatewayDateTime
Definition globals.c:47
char * cmdLineParameter[MAX_PARAMETERS]
array of pointers to command line parameter strings
Definition globals.c:27
const struct spi_cs_control spi_cs1
Definition globals.c:81
struct bme68x_dev bme688_dev
BME688 device.
Definition globals.c:40
struct bme68x_data BME688Data
Definition globals.c:44
uint8_t hdcMinutes
Definition globals.c:39
char resetCause[100]
Definition globals.c:33
struct spi_buf rx_bufs[]
SPI RX buffer structure.
Definition globals.c:118
const struct spi_buf_set tx
SPI TX buffer structure.
Definition globals.c:125
char devIDStr[70]
Definition globals.c:29
uint8_t numParameters
Definition globals.c:28
char myStr[256]
Definition globals.c:34
const struct gpio_dt_spec spics1n
Definition globals.c:55
float hdcTemp
Definition globals.c:25
int myPrintk(char *restrict fmt,...)
Definition main.c:2310
void sw2_seen(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
Callback function for SW2 button.
Definition main.c:2219
int initBME688(void)
Initializes the BME688 sensor over SPI. Performs interface initialization, device reset,...
Definition bme68x.c:1831
void displayFlashxParameters(void)
displays the NV flash parameters.
Definition w25q64jv.c:1021
int8_t getCLICmd(char *line)
parses command line to find position of command in validCLICmds array.
void flashxClearParameters(void)
clears/initializes the flash parameters in RAM
Definition w25q64jv.c:939
int initW25Q64JV(void)
Initiailizes the W25Q64JW.
Definition w25q64jv.c:1254
int myPrintkS(char *restrict fmt,...)
prints a status message to the UART
Definition main.c:2419
void flashxWritePage(uint32_t page, uint32_t address, uint8_t *data, uint16_t count)
writes data to address in serial flash over the SPI bus.
Definition w25q64jv.c:542
void readNVFlashxID(uint8_t *flashId)
reads the NV Flash ID over the SPI bus.
Definition w25q64jv.c:34
struct k_sem uart_rx_disabled_sem
struct k_sem hdc_rdy_seen
int adc_sample(void)
get a single reading from ADC channel
Definition main.c:343
void flashxEraseBlock1(uint32_t address)
erases a 2K block page over the SPI bus.
Definition w25q64jv.c:230
int myPrintkI(char *restrict fmt,...)
prints an information message to the UART
Definition main.c:2386
void flashxReadPage(uint32_t address, uint8_t *flashRead)
reads a 256 byte page over the SPI bus.
Definition w25q64jv.c:427
void flashxErasePage(uint32_t address)
erases a 256 byte page over the SPI bus.
Definition w25q64jv.c:180
void hdc2080_rdy_seen(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
Callback function for HDC2080 RDY pin.
Definition main.c:2196
const struct device *const i2c_dev
get the device structure for the I2C device defined by I2C_DEV_NODE
Definition main.c:106
int myPrintkE(char *restrict fmt,...)
prints an error message to the UART
Definition main.c:2452
void flashxEraseSector(uint32_t address)
erases a 256K byte sector over the SPI bus.
Definition w25q64jv.c:330
void flashxFillPage(uint32_t address, uint16_t data)
fills a 256 byte page with data over the SPI bus.
Definition w25q64jv.c:752
const struct gpio_dt_spec baten
get the GPIO specification for the BATEN pin defined by BATEN_NODE
Definition main.c:175
uint8_t bleCommand(uint8_t *data)
Executes a BLE command.
Definition main.c:2239
void rescan(void)
rescan all I2C and SPI devices
Definition main.c:2281
int getBME688Data(int count, uint8_t quiet)
Triggers and retrieves measurement data from the BME688.
Definition bme68x.c:1916
int init_i2c()
Initializes the I2C interface.
Definition main.c:2160
int initHDC2080(void)
Initializes the HDC2080 sensor with default parameters.
Definition HDC2080.c:839
const struct device *const uart0_dev
void setFlashxParameters(uint8_t display)
loads the NV Flash parameters from teh RAM flash parameters
Definition w25q64jv.c:1122
void flashxErase(void)
erases the entire 8 Mb over the SPI bus.
Definition w25q64jv.c:379
void readNVFlashxStatus(uint8_t *flashStatus)
reads the 3 NV Flash status registers over the SPI bus.
Definition w25q64jv.c:61
void executeCmd(char *line)
executes the command in line array.
SENSORTYPE
Definition jfet_common.h:68
@ SENSORTYPEW25Q64JV
Definition jfet_common.h:70
@ SENSORTYPEUNKNOWN
Definition jfet_common.h:72
@ SENSORTYPEBME688
Definition jfet_common.h:71
@ SENSORTYPEHDC2080
Definition jfet_common.h:69
void getFlashparameters(void)
Read the stored flash parameter block from serial flash.
Definition w25q64jv.c:1183
int getCmd(uint8_t *line)
int myPrintkW(char *restrict fmt,...)
prints a warning message to the UART
Definition main.c:2353
void flashxEraseBlock2(uint32_t address)
Definition w25q64jv.c:280
void int64_to_string(int64_t num, char *str)
Converts a 64-bit signed integer to a null-terminated string.
Flash parameters structure.
Definition jfet_common.h:90
uint8_t nouart0
no UART0 setting
char sensorName[40]
sensor name
uint16_t nextSavedRead
page address of next write JSON packet
char sensorID[7]
last 6 bytes of MAC address
uint8_t ignoreBME688
disable BME688 anywhere in the code for lower power consumption
uint8_t manualTrigger
disable HDC2080 interrups and trigger/read when datetime BLE command seen
uint16_t savedCount
number of saved JSON packets
uint16_t nextSavedWrite
page address of next write JSON packet
uint32_t dutyCycle
interval in seconds to send Sensor data to the cloud
char group[40]
group for this sensor
uint32_t key
0x12345678 valid key
Definition jfet_common.h:91
char customer[40]
cutome name for this sensor
uint8_t silent
= 0 running messages on, = 1 running messages off
Definition jfet_common.h:99
char location[40]
location of this sensor