Myriota Flex SDK 2.6.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// This file is licensed under the BSD with attribution (the "License"); you
5// may not use these files except in compliance with the License.
6//
7// You may obtain a copy of the License here:
8// LICENSE-BSD-3-Clause-Attribution.txt and at
9// https://spdx.org/licenses/BSD-3-Clause-Attribution.html
10//
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
14#ifndef FLEX_H
15#define FLEX_H
16
17#include <stdbool.h>
18#include <stdint.h>
19#include <time.h>
20
21#include "flex_diag_conf.h"
22#include "flex_errors.h"
23
32
35const char *FLEX_VersionString(void);
38uint16_t FLEX_VersionMajor(void);
41uint16_t FLEX_VersionMinor(void);
44uint16_t FLEX_VersionPatch(void);
45
49const char *FLEX_AppVersionString(void);
50
52
63
69
98int FLEX_AnalogInputReadCurrent(uint32_t *const pMicroAmps);
110int FLEX_AnalogInputReadVoltage(uint32_t *const pMilliVolts);
111
113
124
131
150
152
161
167
177
187
189
193
199
201
205
211
217
232
238
249
251typedef void (*FLEX_IOWakeupHandler)(void);
252
261 const FLEX_HandlerModifyAction Action);
262
264
272
286int FLEX_ExtI2CWrite(int Address, const uint8_t *const TxData, uint16_t TxLength);
287
303int FLEX_ExtI2CRead(int Address, const uint8_t *const TxData, uint16_t TxLength,
304 uint8_t *const RxData, uint16_t RxLength);
305
307
318
324
331
337
345
354
368int FLEX_SerialInit(FLEX_SerialProtocol Protocol, uint32_t BaudRate);
387int FLEX_SerialWrite(const uint8_t *Tx, size_t Length);
393int FLEX_SerialRead(uint8_t *Rx, size_t Length);
401
403
407
409typedef enum {
413 1 << 1,
414 FLEX_PCNT_PULL_UP
415 __attribute__((deprecated)),
418
428int FLEX_PulseCounterInit(const uint32_t Limit, const uint32_t Options);
431uint64_t FLEX_PulseCounterGet(void);
434
436typedef void (*FLEX_PCNTWakeupHandler)(void);
437
446 const FLEX_HandlerModifyAction Action);
447
449
453
456void FLEX_DelayMs(const uint32_t mSec);
459void FLEX_DelayUs(const uint32_t uSec);
464void FLEX_Sleep(const uint32_t Sec);
465
467
486
496int FLEX_GNSSFix(int32_t *const Lat, int32_t *const Lon, time_t *const Time);
497
500
505void FLEX_LastLocationAndLastFixTime(int32_t *const LastLatitude, int32_t *const LastLongitude,
506 time_t *const LastFixTime);
507
509time_t FLEX_TimeGet(void);
510
512
516
524
530
537int FLEX_MessageSchedule(const uint8_t *const Message, const size_t MessageSize);
561int FLEX_MessageQueueStatus(FLEX_MessageStatus *Status, const int StatusCount);
565int FLEX_MessageQueueDelete(const uint16_t MessageID);
566
568
572
576typedef void (*FLEX_MessageReceiveHandler)(uint8_t *const message, const int size);
577
585 const FLEX_HandlerModifyAction Action);
586
588
592
595typedef time_t (*FLEX_ScheduledJob)(void);
601int FLEX_JobSchedule(const FLEX_ScheduledJob Job, const time_t Time);
602
607time_t FLEX_ASAP(void);
612time_t FLEX_Never(void);
617time_t FLEX_SecondsFromNow(const unsigned Secs);
622time_t FLEX_MinutesFromNow(const unsigned Mins);
627time_t FLEX_HoursFromNow(const unsigned Hours);
632time_t FLEX_DaysFromNow(const unsigned Days);
633
635
639
644const char *FLEX_ModuleIDGet(void);
645
648const char *FLEX_RegistrationCodeGet(void);
649
651
655
659int FLEX_TemperatureGet(float *const Temperature);
660
662
666
674int FLEX_HWTest(void);
675
677
681
684uint32_t FLEX_TickGet(void);
685
687
691
700int FLEX_GetBatteryVoltage(int32_t *const VoltageMilliVolts);
701
702// Reads if FlexSense is running on external power or battery power.
708int FLEX_IsOnExternalPower(bool *const IsOnExternalPower);
709
712typedef void (*FLEX_OnExternalPowerHandler)(const bool *const IsOnExternalPower);
713
719
721
722#endif /* FLEX_H */
FLEX_AnalogInputMode
Analog Input Modes.
Definition flex.h:65
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:66
@ FLEX_ANALOG_IN_CURRENT
use when measuring Current at the Analog Input
Definition flex.h:67
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:576
FLEX_ExtDigitalIOWakeupModifyAction
External Digital I/O Wakeup Modify Actions.
Definition flex.h:234
int FLEX_ExtDigitalIOGet(const FLEX_DigitalIOPin PinNum)
FLEX_DigitalIOLevel
Digital I/O level Options.
Definition flex.h:213
FLEX_DigitalIOPin
Available Digital I/O Pins.
Definition flex.h:207
int FLEX_ExtDigitalIOWakeupModify(const FLEX_DigitalIOPin PinNum, const FLEX_ExtDigitalIOWakeupModifyAction Action)
void(* FLEX_IOWakeupHandler)(void)
Wakeup Handler Function Pointer Declaration.
Definition flex.h:251
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:236
@ FLEX_EXT_DIGITAL_IO_WAKEUP_ENABLE
Action to enable wakeup for an External Digital I/O pin.
Definition flex.h:235
@ FLEX_EXT_DIGITAL_IO_LOW
Digital I/O level Low.
Definition flex.h:214
@ FLEX_EXT_DIGITAL_IO_HIGH
Digital I/O level High.
Definition flex.h:215
@ FLEX_EXT_DIGITAL_IO_1
Digital I/O Pin 1.
Definition flex.h:208
@ FLEX_EXT_DIGITAL_IO_2
Digital I/O Pin 2.
Definition flex.h:209
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:195
@ FLEX_HANDLER_MODIFY_REMOVE
action to remove a handler
Definition flex.h:197
@ FLEX_HANDLER_MODIFY_ADD
action to add a handler
Definition flex.h:196
int FLEX_LEDBlueStateSet(const FLEX_LEDState LEDState)
FLEX_LEDState
LED States.
Definition flex.h:163
int FLEX_LEDGreenStateSet(const FLEX_LEDState LEDState)
@ FLEX_LED_ON
turn LED On
Definition flex.h:164
@ FLEX_LED_OFF
turn LED Off
Definition flex.h:165
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:712
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:126
@ FLEX_POWER_OUT_12V
set output voltage to 12V
Definition flex.h:128
@ FLEX_POWER_OUT_5V
set output voltage to 5V
Definition flex.h:129
@ FLEX_POWER_OUT_24V
set output voltage to 24V
Definition flex.h:127
void(* FLEX_PCNTWakeupHandler)(void)
Wakeup Handler Function Pointer Declaration.
Definition flex.h:436
FLEX_PulseCounterOption
Pulse Counter Options, bit-wise, can be ORed.
Definition flex.h:409
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:410
@ FLEX_PCNT_EDGE_FALLING
count on falling edge, default rising edge
Definition flex.h:411
@ __attribute__
Definition flex.h:415
@ FLEX_PCNT_DEBOUNCE_DISABLE
disable hardware debouncing, default enabled for about 160us
Definition flex.h:412
FLEX_SerialParity
Serial Interface - Parity Options.
Definition flex.h:326
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:333
FLEX_SerialProtocol
Serial Interface - Protocol Options.
Definition flex.h:320
int FLEX_SerialWrite(const uint8_t *Tx, size_t Length)
int FLEX_SerialDeinit(void)
FLEX_SerialStopbits
Serial Interface - Stopbits Options.
Definition flex.h:339
@ FLEX_SERIAL_PARITY_NONE
No parity for serial device.
Definition flex.h:327
@ FLEX_SERIAL_PARITY_EVEN
Even parity for serial device.
Definition flex.h:328
@ FLEX_SERIAL_PARITY_ODD
Odd parity for serial device.
Definition flex.h:329
@ FLEX_SERIAL_DATABITS_NINE
Nine databits for serial device.
Definition flex.h:335
@ FLEX_SERIAL_DATABITS_EIGHT
Eight databits for serial device.
Definition flex.h:334
@ FLEX_SERIAL_PROTOCOL_RS485
use RS-485 as the Serial Protocol
Definition flex.h:321
@ FLEX_SERIAL_PROTOCOL_RS232
use RS-232 as the Serial Protocol
Definition flex.h:322
@ FLEX_SERIAL_STOPBITS_TWO
2 stopbits for serial device
Definition flex.h:343
@ FLEX_SERIAL_STOPBITS_HALF
0.5 stopbits for serial device
Definition flex.h:341
@ FLEX_SERIAL_STOPBITS_ONEANDHALF
1.5 stopbits for serial device
Definition flex.h:342
@ FLEX_SERIAL_STOPBITS_ONE
1 stopbits for serial device
Definition flex.h:340
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:595
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)
FLEX_MessageTransmitStatus
Message transmission status.
Definition flex.h:518
int FLEX_MessageSchedule(const uint8_t *const Message, const size_t MessageSize)
int FLEX_MessageSlotsFree(void)
int FLEX_MessageQueueDelete(const uint16_t MessageID)
int FLEX_MessageQueueStatus(FLEX_MessageStatus *Status, const int StatusCount)
void FLEX_MessageQueueClear(void)
Clear all messages in the message queue.
int FLEX_MessageSlotsMax(void)
void FLEX_MessageSave(void)
@ FLEX_MSG_TRANSMIT_ONGOING
Message is currently being transmitted.
Definition flex.h:520
@ FLEX_MSG_TRANSMIT_PENDING
Message not yet transmitted.
Definition flex.h:519
@ FLEX_MSG_TRANSMIT_EXPIRED
Message expired before completion.
Definition flex.h:522
@ FLEX_MSG_TRANSMIT_COMPLETE
Message fully transmitted.
Definition flex.h:521
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)
Status information for a message in the uplink queue.
Definition flex.h:526
uint16_t id
id returned by FLEX_MessageSchedule API
Definition flex.h:527
FLEX_MessageTransmitStatus status
status of the message
Definition flex.h:528
Serial Interface - Serial Extended Configuration Options.
Definition flex.h:347
FLEX_SerialProtocol protocol
Protocol for serial communication.
Definition flex.h:348
FLEX_SerialParity parity
Parity for serial communication.
Definition flex.h:350
uint32_t baud_rate
Baud rate for serial communication.
Definition flex.h:349
FLEX_SerialStopbits stopbits
Stopbits for serial communication.
Definition flex.h:352
FLEX_SerialDatabits databits
Databits for serial communication.
Definition flex.h:351