Myriota Flex SDK 2.5.0
Loading...
Searching...
No Matches
flex.h
1
2// Copyright (c) 2024, Myriota Pty Ltd, All Rights Reserved
3// SPDX-License-Identifier: BSD-3-Clause-Attribution
4//
5// This file is licensed under the BSD with attribution (the "License"); you
6// may not use these files except in compliance with the License.
7//
8// You may obtain a copy of the License here:
9// LICENSE-BSD-3-Clause-Attribution.txt and at
10// https://spdx.org/licenses/BSD-3-Clause-Attribution.html
11//
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef FLEX_H
16#define FLEX_H
17
18#include <stdbool.h>
19#include <stdint.h>
20#include <time.h>
21
22#include "flex_diag_conf.h"
23#include "flex_errors.h"
24
33
36const char *FLEX_VersionString(void);
39uint16_t FLEX_VersionMajor(void);
42uint16_t FLEX_VersionMinor(void);
45uint16_t FLEX_VersionPatch(void);
46
50const char *FLEX_AppVersionString(void);
51
53
64
70
99int FLEX_AnalogInputReadCurrent(uint32_t *const pMicroAmps);
111int FLEX_AnalogInputReadVoltage(uint32_t *const pMilliVolts);
112
114
125
132
151
153
162
168
178
188
190
194
200
202
206
212
218
233
239
248
250typedef void (*FLEX_IOWakeupHandler)(void);
251
260 const FLEX_HandlerModifyAction Action);
261
263
271
285int FLEX_ExtI2CWrite(int Address, const uint8_t *const TxData, uint16_t TxLength);
286
302int FLEX_ExtI2CRead(int Address, const uint8_t *const TxData, uint16_t TxLength,
303 uint8_t *const RxData, uint16_t RxLength);
304
306
317
323
330
336
344
353
367int FLEX_SerialInit(FLEX_SerialProtocol Protocol, uint32_t BaudRate);
386int FLEX_SerialWrite(const uint8_t *Tx, size_t Length);
392int FLEX_SerialRead(uint8_t *Rx, size_t Length);
400
402
406
408typedef enum {
412 1 << 1,
413 FLEX_PCNT_PULL_UP
414 __attribute__((deprecated)),
417
427int FLEX_PulseCounterInit(const uint32_t Limit, const uint32_t Options);
430uint64_t FLEX_PulseCounterGet(void);
433
435typedef void (*FLEX_PCNTWakeupHandler)(void);
436
445 const FLEX_HandlerModifyAction Action);
446
448
452
455void FLEX_DelayMs(const uint32_t mSec);
458void FLEX_DelayUs(const uint32_t uSec);
463void FLEX_Sleep(const uint32_t Sec);
464
466
485
495int FLEX_GNSSFix(int32_t *const Lat, int32_t *const Lon, time_t *const Time);
496
499
504void FLEX_LastLocationAndLastFixTime(int32_t *const LastLatitude, int32_t *const LastLongitude,
505 time_t *const LastFixTime);
506
508time_t FLEX_TimeGet(void);
509
511
515
522int FLEX_MessageSchedule(const uint8_t *const Message, const size_t MessageSize);
535
537
541
545typedef void (*FLEX_MessageReceiveHandler)(uint8_t *const message, const int size);
546
554 const FLEX_HandlerModifyAction Action);
555
557
561
564typedef time_t (*FLEX_ScheduledJob)(void);
570int FLEX_JobSchedule(const FLEX_ScheduledJob Job, const time_t Time);
571
576time_t FLEX_ASAP(void);
581time_t FLEX_Never(void);
586time_t FLEX_SecondsFromNow(const unsigned Secs);
591time_t FLEX_MinutesFromNow(const unsigned Mins);
596time_t FLEX_HoursFromNow(const unsigned Hours);
601time_t FLEX_DaysFromNow(const unsigned Days);
602
604
608
613const char *FLEX_ModuleIDGet(void);
614
617const char *FLEX_RegistrationCodeGet(void);
618
620
624
628int FLEX_TemperatureGet(float *const Temperature);
629
631
635
643int FLEX_HWTest(void);
644
646
650
653uint32_t FLEX_TickGet(void);
654
656
660
669int FLEX_GetBatteryVoltage(int32_t *const VoltageMilliVolts);
670
671// Reads if FlexSense is running on external power or battery power.
677int FLEX_IsOnExternalPower(bool *const IsOnExternalPower);
678
681typedef void (*FLEX_OnExternalPowerHandler)(const bool *const IsOnExternalPower);
682
688
690
691#endif /* FLEX_H */
FLEX_AnalogInputMode
Analog Input Modes.
Definition flex.h:66
int FLEX_AnalogInputReadVoltage(uint32_t *const pMilliVolts)
int FLEX_AnalogInputDeinit(void)
int FLEX_AnalogInputInit(const FLEX_AnalogInputMode InputMode)
int FLEX_AnalogInputReadCurrent(uint32_t *const pMicroAmps)
@ FLEX_ANALOG_IN_VOLTAGE
use when measuring Voltage at the Analog Input
Definition flex.h:67
@ FLEX_ANALOG_IN_CURRENT
use when measuring Current at the Analog Input
Definition flex.h:68
void FLEX_DelayMs(const uint32_t mSec)
void FLEX_Sleep(const uint32_t Sec)
void FLEX_DelayUs(const uint32_t uSec)
int FLEX_MessageReceiveHandlerModify(const FLEX_MessageReceiveHandler Handler, const FLEX_HandlerModifyAction Action)
void(* FLEX_MessageReceiveHandler)(uint8_t *const message, const int size)
Definition flex.h:545
FLEX_ExtDigitalIOWakeupModifyAction
External Digital I/O Wakeup Modify Actions.
Definition flex.h:235
int FLEX_ExtDigitalIOGet(const FLEX_DigitalIOPin PinNum)
FLEX_DigitalIOLevel
Digital I/O level Options.
Definition flex.h:214
FLEX_DigitalIOPin
Available Digital I/O Pins.
Definition flex.h:208
int FLEX_ExtDigitalIOWakeupModify(const FLEX_DigitalIOPin PinNum, const FLEX_ExtDigitalIOWakeupModifyAction Action)
void(* FLEX_IOWakeupHandler)(void)
Wakeup Handler Function Pointer Declaration.
Definition flex.h:250
int FLEX_ExtDigitalIOSet(const FLEX_DigitalIOPin PinNum, const FLEX_DigitalIOLevel Level)
int FLEX_ExtDigitalIOWakeupHandlerModify(const FLEX_IOWakeupHandler Handler, const FLEX_HandlerModifyAction Action)
@ FLEX_EXT_DIGITAL_IO_WAKEUP_DISABLE
Action to disable wakeup for an External Digital I/O pin.
Definition flex.h:237
@ FLEX_EXT_DIGITAL_IO_WAKEUP_ENABLE
Action to enable wakeup for an External Digital I/O pin.
Definition flex.h:236
@ FLEX_EXT_DIGITAL_IO_LOW
Digital I/O level Low.
Definition flex.h:215
@ FLEX_EXT_DIGITAL_IO_HIGH
Digital I/O level High.
Definition flex.h:216
@ FLEX_EXT_DIGITAL_IO_1
Digital I/O Pin 1.
Definition flex.h:209
@ FLEX_EXT_DIGITAL_IO_2
Digital I/O Pin 2.
Definition flex.h:210
int FLEX_ExtI2CRead(int Address, const uint8_t *const TxData, uint16_t TxLength, uint8_t *const RxData, uint16_t RxLength)
int FLEX_ExtI2CWrite(int Address, const uint8_t *const TxData, uint16_t TxLength)
FLEX_HandlerModifyAction
Handler Modify Actions.
Definition flex.h:196
@ FLEX_HANDLER_MODIFY_REMOVE
action to remove a handler
Definition flex.h:198
@ FLEX_HANDLER_MODIFY_ADD
action to add a handler
Definition flex.h:197
int FLEX_LEDBlueStateSet(const FLEX_LEDState LEDState)
FLEX_LEDState
LED States.
Definition flex.h:164
int FLEX_LEDGreenStateSet(const FLEX_LEDState LEDState)
@ FLEX_LED_ON
turn LED On
Definition flex.h:165
@ FLEX_LED_OFF
turn LED Off
Definition flex.h:166
const char * FLEX_ModuleIDGet(void)
const char * FLEX_RegistrationCodeGet(void)
int FLEX_IsOnExternalPower(bool *const IsOnExternalPower)
void FLEX_OnExternalPowerHandlerSet(const FLEX_OnExternalPowerHandler Handler)
void(* FLEX_OnExternalPowerHandler)(const bool *const IsOnExternalPower)
Definition flex.h:681
int FLEX_GetBatteryVoltage(int32_t *const VoltageMilliVolts)
int FLEX_PowerOutInit(const FLEX_PowerOut Voltage)
int FLEX_PowerOutDeinit(void)
FLEX_PowerOut
Power Output Voltage Options.
Definition flex.h:127
@ FLEX_POWER_OUT_12V
set output voltage to 12V
Definition flex.h:129
@ FLEX_POWER_OUT_5V
set output voltage to 5V
Definition flex.h:130
@ FLEX_POWER_OUT_24V
set output voltage to 24V
Definition flex.h:128
void(* FLEX_PCNTWakeupHandler)(void)
Wakeup Handler Function Pointer Declaration.
Definition flex.h:435
FLEX_PulseCounterOption
Pulse Counter Options, bit-wise, can be ORed.
Definition flex.h:408
uint64_t FLEX_PulseCounterGet(void)
void FLEX_PulseCounterDeinit(void)
De-initialise the pulse counter.
int FLEX_PulseCounterHandlerModify(const FLEX_PCNTWakeupHandler Handler, const FLEX_HandlerModifyAction Action)
int FLEX_PulseCounterInit(const uint32_t Limit, const uint32_t Options)
@ FLEX_PCNT_DEFAULT_OPTIONS
default option, counts on rising edge
Definition flex.h:409
@ FLEX_PCNT_EDGE_FALLING
count on falling edge, default rising edge
Definition flex.h:410
@ __attribute__
Definition flex.h:414
@ FLEX_PCNT_DEBOUNCE_DISABLE
disable hardware debouncing, default enabled for about 160us
Definition flex.h:411
FLEX_SerialParity
Serial Interface - Parity Options.
Definition flex.h:325
int FLEX_SerialRead(uint8_t *Rx, size_t Length)
int FLEX_SerialInit(FLEX_SerialProtocol Protocol, uint32_t BaudRate)
int FLEX_SerialInitEx(const FLEX_SerialExOptions Options)
FLEX_SerialDatabits
Serial Interface - Databits Options.
Definition flex.h:332
FLEX_SerialProtocol
Serial Interface - Protocol Options.
Definition flex.h:319
int FLEX_SerialWrite(const uint8_t *Tx, size_t Length)
int FLEX_SerialDeinit(void)
FLEX_SerialStopbits
Serial Interface - Stopbits Options.
Definition flex.h:338
@ FLEX_SERIAL_PARITY_NONE
No parity for serial device.
Definition flex.h:326
@ FLEX_SERIAL_PARITY_EVEN
Even parity for serial device.
Definition flex.h:327
@ FLEX_SERIAL_PARITY_ODD
Odd parity for serial device.
Definition flex.h:328
@ FLEX_SERIAL_DATABITS_NINE
Nine databits for serial device.
Definition flex.h:334
@ FLEX_SERIAL_DATABITS_EIGHT
Eight databits for serial device.
Definition flex.h:333
@ FLEX_SERIAL_PROTOCOL_RS485
use RS-485 as the Serial Protocol
Definition flex.h:320
@ FLEX_SERIAL_PROTOCOL_RS232
use RS-232 as the Serial Protocol
Definition flex.h:321
@ FLEX_SERIAL_STOPBITS_TWO
2 stopbits for serial device
Definition flex.h:342
@ FLEX_SERIAL_STOPBITS_HALF
0.5 stopbits for serial device
Definition flex.h:340
@ FLEX_SERIAL_STOPBITS_ONEANDHALF
1.5 stopbits for serial device
Definition flex.h:341
@ FLEX_SERIAL_STOPBITS_ONE
1 stopbits for serial device
Definition flex.h:339
uint32_t FLEX_TickGet(void)
int FLEX_TemperatureGet(float *const Temperature)
int FLEX_HWTest(void)
time_t FLEX_MinutesFromNow(const unsigned Mins)
time_t(* FLEX_ScheduledJob)(void)
Definition flex.h:564
time_t FLEX_SecondsFromNow(const unsigned Secs)
time_t FLEX_HoursFromNow(const unsigned Hours)
int FLEX_JobSchedule(const FLEX_ScheduledJob Job, const time_t Time)
time_t FLEX_Never(void)
time_t FLEX_ASAP(void)
time_t FLEX_DaysFromNow(const unsigned Days)
bool FLEX_GNSSHasValidFix(void)
Returns true if the system has obtained a valid time and location fix.
void FLEX_LastLocationAndLastFixTime(int32_t *const LastLatitude, int32_t *const LastLongitude, time_t *const LastFixTime)
time_t FLEX_TimeGet(void)
Get the current epoch time.
int FLEX_GNSSFix(int32_t *const Lat, int32_t *const Lon, time_t *const Time)
size_t FLEX_MessageBytesFree(void)
int FLEX_MessageSchedule(const uint8_t *const Message, const size_t MessageSize)
int FLEX_MessageSlotsFree(void)
void FLEX_MessageQueueClear(void)
Clear all messages in the message queue.
void FLEX_MessageSave(void)
uint16_t FLEX_VersionPatch(void)
const char * FLEX_VersionString(void)
uint16_t FLEX_VersionMinor(void)
uint16_t FLEX_VersionMajor(void)
const char * FLEX_AppVersionString(void)
Serial Interface - Serial Extended Configuration Options.
Definition flex.h:346
FLEX_SerialProtocol protocol
Protocol for serial communication.
Definition flex.h:347
FLEX_SerialParity parity
Parity for serial communication.
Definition flex.h:349
uint32_t baud_rate
Baud rate for serial communication.
Definition flex.h:348
FLEX_SerialStopbits stopbits
Stopbits for serial communication.
Definition flex.h:351
FLEX_SerialDatabits databits
Databits for serial communication.
Definition flex.h:350