27#define RESOLVBUS_CONTAINEROF(__Pointer__, __Type__, __Member__) \
28 ((__Type__ *) (((uint8_t *) (__Pointer__)) - ((uint8_t *) (&((__Type__ *) 0)->__Member__))))
31#define RESOLVBUS_COUNTOF(__Array__) \
32 (sizeof (__Array__) / sizeof ((__Array__) [0]))
35#define RESOLVBUS_PACKETFRAMECOUNTOF(__Type__) \
36 ((sizeof (__Type__) + 3) >> 2)
39#define RESOLVBUS_LIVEENCODER_INITIALIZER { .BufferLength = 0, }
40#define RESOLVBUS_LIVEDECODER_INITIALIZER { .BufferIndex = 0, }
41#define RESOLVBUS_LIVETRANSCEIVEROPTIONS_INITIALIZER { .Tries = 0, }
42#define RESOLVBUS_LIVETRANSCEIVER_INITIALIZER { .ActionTries = 0, }
708#if RESOLVBUS_DEBUG > 0
RESOLVBUS_RESULT ResolVBus_LiveDecoder_Initialize(RESOLVBUS_LIVEDECODER *Decoder, void *FrameDataBuffer, size_t FrameDataBufferLength, RESOLVBUS_LIVEDECODERHANDLER Handler)
const char * ResolVBus_GetBacktrace(void)
RESOLVBUS_LIVEENCODERPHASE
Definition: ResolVBus.h:93
@ RESOLVBUS_LIVEENCODERPHASE_GAININGENERGY
Definition: ResolVBus.h:107
@ RESOLVBUS_LIVEENCODERPHASE_TRANSMITTING
Definition: ResolVBus.h:102
@ RESOLVBUS_LIVEENCODERPHASE_SUSPENDEDWITHTIMEOUT
Definition: ResolVBus.h:117
@ RESOLVBUS_LIVEENCODERPHASE_SUSPENDED
Definition: ResolVBus.h:112
@ RESOLVBUS_LIVEENCODERPHASE_IDLE
Definition: ResolVBus.h:97
RESOLVBUS_LIVEENCODEREVENTTYPE
Definition: ResolVBus.h:76
@ RESOLVBUS_LIVEENCODEREVENTTYPE_IDLE
Definition: ResolVBus.h:82
@ RESOLVBUS_LIVEENCODEREVENTTYPE_TRANSMIT
Definition: ResolVBus.h:89
RESOLVBUS_RESULT ResolVBus_LiveEncoder_Suspend(RESOLVBUS_LIVEENCODER *Encoder)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_QueuePacketHeader(RESOLVBUS_LIVEENCODER *Encoder, uint16_t DestinationAddress, uint16_t SourceAddress, uint8_t MinorVersion, uint16_t Command, uint8_t FrameCount)
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_Initialize(RESOLVBUS_LIVETRANSCEIVER *Transceiver, uint8_t *EncoderBuffer, size_t EncoderBufferLength, void *DecoderBuffer, size_t DecoderBufferLength, RESOLVBUS_LIVETRANSCEIVERHANDLER Handler)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_QueueTelegramFrame(RESOLVBUS_LIVEENCODER *Encoder, const uint8_t *SevenBytes)
void ResolVBus_ResetBacktrace(const char *Message, const char *Expression, const char *File, int Line, const char *Func)
void ResolVBus_AddBacktrace(const char *Expression, const char *File, int Line, const char *Func)
RESOLVBUS_RESULT ResolVBus_CalcAndCompareCrc(uint8_t ProtocolVersion, const uint8_t *Buffer, size_t Length, bool *pCrcIsValid)
RESOLVBUS_RESULT ResolVBus_CalcCrcV0(const uint8_t *Buffer, size_t Length, uint8_t *pCrc)
RESOLVBUS_RESULT(* RESOLVBUS_LIVETRANSCEIVERHANDLER)(RESOLVBUS_LIVETRANSCEIVER *Transceiver, const RESOLVBUS_LIVETRANSCEIVEREVENT *Event)
Definition: ResolVBus.h:274
RESOLVBUS_RESULT ResolVBus_LiveEncoder_QueueTelegramHeader(RESOLVBUS_LIVEENCODER *Encoder, uint16_t DestinationAddress, uint16_t SourceAddress, uint8_t MinorVersion, uint8_t Command, uint8_t FrameCount)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_Resume(RESOLVBUS_LIVEENCODER *Encoder)
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_ReleaseBus(RESOLVBUS_LIVETRANSCEIVER *Transceiver, uint16_t PeerAddress, const RESOLVBUS_LIVETRANSCEIVEROPTIONS *CustomOptions, RESOLVBUS_LIVETRANSCEIVERHANDLER Handler)
RESOLVBUS_RESULT(* RESOLVBUS_LIVEDECODERHANDLER)(RESOLVBUS_LIVEDECODER *Decoder, const RESOLVBUS_LIVEDECODEREVENT *Event)
Definition: ResolVBus.h:273
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_GetTimeout(RESOLVBUS_LIVETRANSCEIVER *Transceiver, uint32_t *pMicroseconds)
RESOLVBUS_LIVETRANSCEIVEREVENTTYPE
Definition: ResolVBus.h:234
@ RESOLVBUS_LIVETRANSCEIVEREVENTTYPE_DECODER
Definition: ResolVBus.h:253
@ RESOLVBUS_LIVETRANSCEIVEREVENTTYPE_TIMEOUT
Definition: ResolVBus.h:243
@ RESOLVBUS_LIVETRANSCEIVEREVENTTYPE_ENCODER
Definition: ResolVBus.h:248
@ RESOLVBUS_LIVETRANSCEIVEREVENTTYPE_ACTION
Definition: ResolVBus.h:238
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_SetValueById(RESOLVBUS_LIVETRANSCEIVER *Transceiver, uint16_t PeerAddress, uint16_t ValueId, uint8_t ValueSubIndex, uint32_t Value, const RESOLVBUS_LIVETRANSCEIVEROPTIONS *CustomOptions, RESOLVBUS_LIVETRANSCEIVERHANDLER Handler)
RESOLVBUS_RESULT ResolVBus_InjectSeptett(const uint8_t *Source, uint8_t *Destination, size_t Length)
uint16_t ResolVBus_ReadUInt16LE(const uint8_t *Buffer)
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_GetEncoder(RESOLVBUS_LIVETRANSCEIVER *Transceiver, RESOLVBUS_LIVEENCODER **pEncoder)
void ResolVBus_WriteUInt32LE(uint8_t *Buffer, uint32_t Value)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_QueuePacketFrame(RESOLVBUS_LIVEENCODER *Encoder, const uint8_t *FourBytes)
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_Decode(RESOLVBUS_LIVETRANSCEIVER *Transceiver, const uint8_t *Bytes, size_t Length)
RESOLVBUS_RESULT ResolVBus_LiveDecoder_Decode(RESOLVBUS_LIVEDECODER *Decoder, const uint8_t *Bytes, size_t Length)
RESOLVBUS_RESULT(* RESOLVBUS_LIVEENCODERHANDLER)(RESOLVBUS_LIVEENCODER *Encoder, const RESOLVBUS_LIVEENCODEREVENT *Event)
Definition: ResolVBus.h:271
void ResolVBus_WriteUInt16LE(uint8_t *Buffer, uint16_t Value)
RESOLVBUS_RESULT ResolVBus_CalcCrc(uint8_t ProtocolVersion, const uint8_t *Buffer, size_t Length, uint8_t *pCrc)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_SuspendWithTimeout(RESOLVBUS_LIVEENCODER *Encoder, uint32_t Microseconds)
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_GetValueIdByIdHash(RESOLVBUS_LIVETRANSCEIVER *Transceiver, uint16_t PeerAddress, uint32_t ValueIdHash, const RESOLVBUS_LIVETRANSCEIVEROPTIONS *CustomOptions, RESOLVBUS_LIVETRANSCEIVERHANDLER Handler)
void ResolVBus_PrintBacktrace(void)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_SuspendWithTimeoutAndCallback(RESOLVBUS_LIVEENCODER *Encoder, uint32_t Microseconds, RESOLVBUS_LIVEENCODERCALLBACK Callback, void *Context)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_GetTimeout(RESOLVBUS_LIVEENCODER *Encoder, uint32_t *pMicroseconds)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_Initialize(RESOLVBUS_LIVEENCODER *Encoder, uint8_t *Buffer, size_t Length, RESOLVBUS_LIVEENCODERHANDLER Handler)
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_WaitForFreeBus(RESOLVBUS_LIVETRANSCEIVER *Transceiver, const RESOLVBUS_LIVETRANSCEIVEROPTIONS *CustomOptions, RESOLVBUS_LIVETRANSCEIVERHANDLER Handler)
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_GetValueById(RESOLVBUS_LIVETRANSCEIVER *Transceiver, uint16_t PeerAddress, uint16_t ValueId, uint8_t ValueSubIndex, const RESOLVBUS_LIVETRANSCEIVEROPTIONS *CustomOptions, RESOLVBUS_LIVETRANSCEIVERHANDLER Handler)
RESOLVBUS_RESULT
Definition: ResolVBus.h:60
@ RESOLVBUS_ERROR_NULLPOINTER
Definition: ResolVBus.h:66
@ RESOLVBUS_ERROR_INDEXOUTOFBOUNDS
Definition: ResolVBus.h:68
@ RESOLVBUS_ERROR_SUSPENDED
Definition: ResolVBus.h:72
@ RESOLVBUS_ERROR_UNSUPPORTEDPROTOCOL
Definition: ResolVBus.h:67
@ RESOLVBUS_ERROR_UNKNOWN
Definition: ResolVBus.h:64
@ RESOLVBUS_ERROR_NYI
Definition: ResolVBus.h:65
@ RESOLVBUS_ERROR_INVALIDARGUMENT
Definition: ResolVBus.h:69
@ RESOLVBUS_WOULDBLOCK
Definition: ResolVBus.h:62
@ RESOLVBUS_ERROR_INVALIDSTATE
Definition: ResolVBus.h:71
@ RESOLVBUS_OK
Definition: ResolVBus.h:61
@ RESOLVBUS_ERROR_INVALIDCHECKSUM
Definition: ResolVBus.h:70
RESOLVBUS_RESULT ResolVBus_LiveTransceiver_HandleTimer(RESOLVBUS_LIVETRANSCEIVER *Transceiver, uint32_t Microseconds)
uint32_t ResolVBus_ReadUInt32LE(const uint8_t *Buffer)
RESOLVBUS_RESULT(* RESOLVBUS_LIVEENCODERCALLBACK)(RESOLVBUS_LIVEENCODER *Encoder, void *Context)
Definition: ResolVBus.h:272
RESOLVBUS_RESULT ResolVBus_LiveEncoder_QueueDatagram(RESOLVBUS_LIVEENCODER *Encoder, uint16_t DestinationAddress, uint16_t SourceAddress, uint8_t MinorVersion, uint16_t Command, uint16_t Param16, uint32_t Param32)
RESOLVBUS_LIVEDECODEREVENTTYPE
Definition: ResolVBus.h:121
@ RESOLVBUS_LIVEDECODEREVENTTYPE_TELEGRAMEND
Definition: ResolVBus.h:230
@ RESOLVBUS_LIVEDECODEREVENTTYPE_PACKETHEADER
Definition: ResolVBus.h:133
@ RESOLVBUS_LIVEDECODEREVENTTYPE_PACKETFRAME
Definition: ResolVBus.h:150
@ RESOLVBUS_LIVEDECODEREVENTTYPE_PACKETEND
Definition: ResolVBus.h:167
@ RESOLVBUS_LIVEDECODEREVENTTYPE_DATAGRAM
Definition: ResolVBus.h:182
@ RESOLVBUS_LIVEDECODEREVENTTYPE_TELEGRAMHEADER
Definition: ResolVBus.h:196
@ RESOLVBUS_LIVEDECODEREVENTTYPE_TELEGRAMFRAME
Definition: ResolVBus.h:213
RESOLVBUS_RESULT ResolVBus_CalcAndSetCrc(uint8_t ProtocolVersion, uint8_t *Buffer, size_t Length)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_QueuePacketFrames(RESOLVBUS_LIVEENCODER *Encoder, const void *Bytes, size_t Length)
RESOLVBUS_RESULT ResolVBus_ExtractSeptett(const uint8_t *Source, uint8_t *Destination, size_t Length)
void ResolVBus_DebugLog(const char *File, int Line, const char *Func, const char *Format,...)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_QueueTelegramFrames(RESOLVBUS_LIVEENCODER *Encoder, const void *Bytes, size_t Length)
RESOLVBUS_RESULT ResolVBus_LiveEncoder_HandleTimer(RESOLVBUS_LIVEENCODER *Encoder, uint32_t Microseconds)
Definition: ResolVBus.h:418
uint16_t Param16
Definition: ResolVBus.h:508
uint16_t Command
Definition: ResolVBus.h:457
void * FrameDataBuffer
Definition: ResolVBus.h:493
uint8_t ProtocolVersion
Definition: ResolVBus.h:443
uint16_t SourceAddress
Definition: ResolVBus.h:436
size_t FrameDataLength
Definition: ResolVBus.h:485
uint16_t DestinationAddress
Definition: ResolVBus.h:429
size_t FrameDataBufferLength
Definition: ResolVBus.h:501
RESOLVBUS_LIVEDECODEREVENTTYPE EventType
Definition: ResolVBus.h:422
uint8_t MajorVersion
Definition: ResolVBus.h:450
uint32_t Param32
Definition: ResolVBus.h:515
uint8_t FrameData[7]
Definition: ResolVBus.h:478
uint8_t FrameCount
Definition: ResolVBus.h:464
uint8_t FrameIndex
Definition: ResolVBus.h:471
Definition: ResolVBus.h:519
uint8_t Buffer[32]
Definition: ResolVBus.h:523
RESOLVBUS_LIVEDECODERHANDLER Handler
Definition: ResolVBus.h:533
RESOLVBUS_LIVEDECODEREVENT Event
Definition: ResolVBus.h:538
size_t BufferIndex
Definition: ResolVBus.h:528
Definition: ResolVBus.h:282
const void * TransmitBytes
Definition: ResolVBus.h:291
size_t TransmitLength
Definition: ResolVBus.h:296
RESOLVBUS_LIVEENCODEREVENTTYPE EventType
Definition: ResolVBus.h:286
Definition: ResolVBus.h:300
RESOLVBUS_LIVEENCODERPHASE Phase
Definition: ResolVBus.h:399
RESOLVBUS_LIVEENCODERHANDLER Handler
Definition: ResolVBus.h:414
size_t BufferLength
Definition: ResolVBus.h:313
int EnergyLossPerByte
Definition: ResolVBus.h:346
int EnergyGainPerUs
Definition: ResolVBus.h:355
int Baudrate
Definition: ResolVBus.h:328
int MaxEnergy
Definition: ResolVBus.h:337
uint32_t SuspendTimeoutUs
Definition: ResolVBus.h:384
bool SuspendRequested
Definition: ResolVBus.h:371
uint32_t PhaseTimeoutUs
Definition: ResolVBus.h:404
bool SuspendWithTimeoutRequested
Definition: ResolVBus.h:379
uint8_t ProtocolVersion
Definition: ResolVBus.h:409
size_t BufferWriteIndex
Definition: ResolVBus.h:318
size_t BufferReadIndex
Definition: ResolVBus.h:323
void * SuspendCallbackContext
Definition: ResolVBus.h:394
int CurrentEnergy
Definition: ResolVBus.h:363
uint8_t * Buffer
Definition: ResolVBus.h:306
RESOLVBUS_LIVEENCODERCALLBACK SuspendCallback
Definition: ResolVBus.h:389
Definition: ResolVBus.h:542
const RESOLVBUS_LIVEDECODEREVENT * DecoderEvent
Definition: ResolVBus.h:556
RESOLVBUS_LIVETRANSCEIVEREVENTTYPE EventType
Definition: ResolVBus.h:546
const RESOLVBUS_LIVEENCODEREVENT * EncoderEvent
Definition: ResolVBus.h:551
Definition: ResolVBus.h:578
uint16_t ActionExpectedCommand3
Definition: ResolVBus.h:667
int ActionTries
Definition: ResolVBus.h:612
RESOLVBUS_LIVEDECODER Decoder
Definition: ResolVBus.h:587
uint16_t ActionExpectedCommand2
Definition: ResolVBus.h:662
bool ActionHasExpectedParam32
Definition: ResolVBus.h:682
uint16_t ActionPeerAddress
Definition: ResolVBus.h:637
uint32_t ActionParam32
Definition: ResolVBus.h:652
uint16_t ActionCommand
Definition: ResolVBus.h:642
uint32_t ActionTimeoutIncr
Definition: ResolVBus.h:622
bool ActionHasExpectedParam16
Definition: ResolVBus.h:672
RESOLVBUS_LIVETRANSCEIVERHANDLER ActionCommitHandler
Definition: ResolVBus.h:632
RESOLVBUS_LIVETRANSCEIVERHANDLER ActionHandler
Definition: ResolVBus.h:607
uint16_t ActionParam16
Definition: ResolVBus.h:647
uint16_t SelfAddress
Definition: ResolVBus.h:597
uint32_t ActionExpectedParam32
Definition: ResolVBus.h:687
bool ActionSet
Definition: ResolVBus.h:602
RESOLVBUS_LIVEENCODER Encoder
Definition: ResolVBus.h:582
uint16_t ActionExpectedCommand1
Definition: ResolVBus.h:657
uint32_t ActionNextTimeout
Definition: ResolVBus.h:617
uint32_t ActionTimeout
Definition: ResolVBus.h:627
uint16_t ActionExpectedParam16
Definition: ResolVBus.h:677
RESOLVBUS_LIVETRANSCEIVERHANDLER Handler
Definition: ResolVBus.h:592
Definition: ResolVBus.h:560
uint32_t TimeoutIncrement
Definition: ResolVBus.h:574
int Tries
Definition: ResolVBus.h:564
uint32_t InitialTimeout
Definition: ResolVBus.h:569