Appiko
S2LP_PacketHandler.c
Go to the documentation of this file.
1 
23 /* Includes ------------------------------------------------------------------*/
24 #include "S2LP_PacketHandler.h"
25 #include "MCU_Interface.h"
26 #include "S2LP_PktWMbus.h"
27 
28 
68 #define IS_DIRECT_TX(MODE) (((MODE) == NORMAL_TX_MODE) || \
69  ((MODE) == DIRECT_TX_FIFO_MODE) || \
70  ((MODE) == DIRECT_TX_GPIO_MODE) || \
71  ((MODE) == PN9_TX_MODE))
72 
73 #define IS_DIRECT_RX(MODE) (((MODE) == NORMAL_RX_MODE) || \
74  ((MODE) == DIRECT_RX_FIFO_MODE) || \
75  ((MODE) == DIRECT_RX_GPIO_MODE))
76 
77 
78 #define IS_PKT_SEQ_NUMBER_RELOAD(SEQN) (SEQN<=3)
79 
117 uint8_t S2LPGetPacketFormat(void)
118 {
119  uint8_t tmp;
120 
121  /* Reads the PCKTCTRL2 register value */
122  g_xStatus = S2LPSpiReadRegisters(PCKTCTRL3_ADDR, 1, &tmp);
123 
124  tmp &= PCKT_FRMT_REGMASK;
125  tmp >>= 6;
126 
127  /* wmbus or basic */
128  if(tmp==0x00) {
130  tmp = 4; // wmbus
131  }
132  }
133  return tmp;
134 }
135 
136 
142 void S2LPSetPreambleLength(uint16_t cPreambleLength)
143 {
144  uint8_t tmpBuffer[2];
145 
146  s_assert_param(IS_PREAMBLE_LEN(cPreambleLength));
147 
148  S2LPSpiReadRegisters(PCKTCTRL6_ADDR, 1, &tmpBuffer[0]);
149 
150  /* Set the preamble length */
151  tmpBuffer[0] &= ~PREAMBLE_LEN_9_8_REGMASK;
152  tmpBuffer[0] |= (cPreambleLength>>8) & PREAMBLE_LEN_9_8_REGMASK;
153  tmpBuffer[1] = cPreambleLength & PREAMBLE_LEN_7_0_REGMASK;
154 
155  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL6_ADDR, 2, tmpBuffer);
156 
157 }
158 
159 
165 uint16_t S2LPGetPreambleLength(void)
166 {
167  uint8_t tmpBuffer[2];
168 
169  /* Reads the PCKTCTRL2 register value */
170  g_xStatus = S2LPSpiReadRegisters(PCKTCTRL6_ADDR, 2, tmpBuffer);
171 
172  /* Rebuild and return value */
173  return ( ((((uint16_t)tmpBuffer[0])&PREAMBLE_LEN_9_8_REGMASK)<<8) | (((uint16_t)tmpBuffer[1]) + 1));
174 
175 }
176 
177 
183 void S2LPSetSyncLength(uint8_t cSyncLength)
184 {
185  uint8_t tmp;
186 
187  s_assert_param(IS_SYNC_LEN(cSyncLength));
188 
189  S2LPSpiReadRegisters(PCKTCTRL6_ADDR, 1, &tmp);
190 
191  tmp &= ~SYNC_LEN_REGMASK;
192  tmp |= (cSyncLength<<2);
193 
194  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL6_ADDR, 1, &tmp);
195 
196 }
197 
198 
204 uint8_t S2LPGetSyncLength(void)
205 {
206  uint8_t tmp;
207  g_xStatus = S2LPSpiReadRegisters(PCKTCTRL6_ADDR, 1, &tmp);
208  return (((tmp & SYNC_LEN_REGMASK)>>2) );
209 
210 }
211 
212 
220 {
221  uint8_t tmp;
222  s_assert_param(IS_SFUNCTIONAL_STATE(xNewState));
223 
224  S2LPSpiReadRegisters(PCKTCTRL1_ADDR, 1, &tmp);
225  if(xNewState == S_ENABLE) {
226  tmp |= WHIT_EN_REGMASK;
227  }
228  else {
229  tmp &= ~WHIT_EN_REGMASK;
230  }
231  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL1_ADDR, 1, &tmp);
232 
233 }
234 
235 
242 {
243  uint8_t tmp;
244 
245  S2LPSpiReadRegisters(PCKTCTRL1_ADDR, 1, &tmp);
246  if(xNewState == S_ENABLE) {
247  tmp |= FEC_EN_REGMASK;
248  }
249  else {
250  tmp &= ~FEC_EN_REGMASK;
251  }
252  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL1_ADDR, 1, &tmp);
253 
254 }
255 
256 
263 {
264  uint8_t tmp;
265 
266  S2LPSpiReadRegisters(PCKTCTRL2_ADDR, 1, &tmp);
267 
268  tmp &= ~MANCHESTER_EN_REGMASK;
269  tmp |= (((uint8_t)xNewState)<<1);
270 
271  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL2_ADDR, 1, &tmp);
272 
273 }
274 
275 
282 {
283  uint8_t tmp;
284 
285  S2LPSpiReadRegisters(PCKTCTRL2_ADDR, 1, &tmp);
286 
287  tmp &= ~MBUS_3OF6_EN_REGMASK;
288  tmp |= (((uint8_t)xNewState)<<2);
289 
290  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL2_ADDR, 1, &tmp);
291 
292 }
293 
294 
301 void S2LPSetSyncWords(uint32_t lSyncWords, uint8_t cSyncLength)
302 {
303  uint8_t tmpBuffer[4], tmp;
304 
305  /* Split the 32-bit value in 4 8-bit values */
306  for(uint8_t i=0 ; i<4 ; i++) {
307  tmpBuffer[i]=(uint8_t)(lSyncWords>>(8*i));
308  }
309 
310  S2LPSpiReadRegisters(PCKTCTRL6_ADDR, 1, &tmp);
311 
312  tmp &= ~SYNC_LEN_REGMASK;
313  tmp |= (cSyncLength<<2);
314 
315  S2LPSpiWriteRegisters(PCKTCTRL6_ADDR, 1, &tmp);
316 
317  /* Writes the new value on the PCKTCTRL2 register */
318  g_xStatus = S2LPSpiWriteRegisters(SYNC3_ADDR, 4, tmpBuffer);
319 
320 }
321 
322 
329 void S2LPGetSyncWords(uint32_t* lSyncWords, uint8_t* cSyncLength)
330 {
331  uint8_t tmpBuffer[4], tmp;
332 
333  /* Reads the PCKTCTRL2 register value */
334  S2LPSpiReadRegisters(PCKTCTRL6_ADDR, 1, &tmp);
335 
336  tmp &= SYNC_LEN_REGMASK;
337  tmp >>= 2;
338  *cSyncLength = tmp;
339 
340  g_xStatus = S2LPSpiReadRegisters(SYNC3_ADDR, 4, tmpBuffer);
341  *lSyncWords = ((uint32_t)tmpBuffer[0]<<24) | ((uint32_t)tmpBuffer[1]<<16) | ((uint32_t)tmpBuffer[2]<<8) | ((uint32_t)tmpBuffer[3]);
342 
343 }
344 
345 
353 {
354  uint8_t tmp;
355  s_assert_param(IS_SFUNCTIONAL_STATE(xNewState));
356 
357  S2LPSpiReadRegisters(PCKT_FLT_OPTIONS_ADDR, 1, &tmp);
358  if(xNewState == S_ENABLE) {
359  tmp |= CRC_FLT_REGMASK;
360  }
361  else {
362  tmp &= ~CRC_FLT_REGMASK;
363  }
364  g_xStatus = S2LPSpiWriteRegisters(PCKT_FLT_OPTIONS_ADDR, 1, &tmp);
365 
366 }
367 
368 
369 
376 {
377  uint8_t tmp;
378  g_xStatus = S2LPSpiReadRegisters(RX_ADDRE_FIELD0_ADDR, 1, &tmp);
379  return tmp;
380 }
381 
382 
389 {
390  uint8_t tmp;
391  g_xStatus = S2LPSpiReadRegisters(RX_ADDRE_FIELD1_ADDR, 1, &tmp);
392  return tmp;
393 }
394 
395 
401 uint8_t S2LPGetMyAddress(void)
402 {
403  uint8_t tmp;
404  g_xStatus = S2LPSpiReadRegisters(PCKT_FLT_GOALS0_ADDR, 1, &tmp);
405  return tmp;
406 }
407 
408 
415 {
416  uint8_t tmp;
417  g_xStatus = S2LPSpiReadRegisters(PCKT_FLT_GOALS2_ADDR, 1, &tmp);
418  return tmp;
419 }
420 
421 
428 {
429  uint8_t tmp;
430  g_xStatus = S2LPSpiReadRegisters(PCKT_FLT_GOALS1_ADDR, 1, &tmp);
431  return tmp;
432 }
433 
434 
440 uint8_t S2LPGetRxSourceMask(void)
441 {
442  uint8_t tmp;
443  g_xStatus = S2LPSpiReadRegisters(PCKT_FLT_GOALS4_ADDR, 1, &tmp);
444  return tmp;
445 }
446 
447 
454 {
455  uint8_t tmp;
456  g_xStatus = S2LPSpiReadRegisters(PCKT_FLT_GOALS3_ADDR, 1, &tmp);
457  return tmp;
458 }
459 
460 
461 
467 void S2LPSetRxSourceMask(uint8_t mask)
468 {
469  g_xStatus = S2LPSpiWriteRegisters(PCKT_FLT_GOALS4_ADDR, 1, &mask);
470 }
471 
472 
478 void S2LPSetRxSourceReferenceAddress(uint8_t address)
479 {
480  g_xStatus = S2LPSpiWriteRegisters(PCKT_FLT_GOALS3_ADDR, 1, &address);
481 }
482 
483 
489 void S2LPSetBroadcastAddress(uint8_t address)
490 {
491  g_xStatus = S2LPSpiWriteRegisters(PCKT_FLT_GOALS2_ADDR, 1, &address);
492 }
493 
494 
500 void S2LPSetMulticastAddress(uint8_t address)
501 {
502  g_xStatus = S2LPSpiWriteRegisters(PCKT_FLT_GOALS1_ADDR, 1, &address);
503 }
504 
505 
506 
512 void S2LPSetMyAddress(uint8_t address)
513 {
514  g_xStatus = S2LPSpiWriteRegisters(PCKT_FLT_GOALS0_ADDR, 1, &address);
515 }
516 
517 
518 
519 
527 {
528  uint8_t tmp;
529  s_assert_param(IS_DIRECT_RX(xDirectRx));
530 
531  S2LPSpiReadRegisters(PCKTCTRL3_ADDR, 1, &tmp);
532  tmp &= ~RX_MODE_REGMASK;
533  tmp |= (uint8_t)xDirectRx;
534  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL3_ADDR, 1, &tmp);
535 
536 }
537 
538 
545 {
546  uint8_t tmp;
547  g_xStatus = S2LPSpiReadRegisters(PCKTCTRL3_ADDR, 1, &tmp);
548  return (DirectRx)(tmp & RX_MODE_REGMASK);
549 
550 }
551 
552 
560 {
561  uint8_t tmp;
562  s_assert_param(IS_DIRECT_TX(xDirectTx));
563 
564  S2LPSpiReadRegisters(PCKTCTRL1_ADDR, 1, &tmp);
565  tmp &= ~TXSOURCE_REGMASK;
566  tmp |= (uint8_t)xDirectTx;
567  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL1_ADDR, 1, &tmp);
568 }
569 
570 
577 {
578  uint8_t tmp;
579  g_xStatus = S2LPSpiReadRegisters(PCKTCTRL1_ADDR, 1, &tmp);
580  return (DirectTx)(tmp & TXSOURCE_REGMASK);
581 }
582 
589 {
590  uint8_t tempRegValue;
591 
592  /* Reads the TX_PCKT_INFO register value */
593  g_xStatus = S2LPSpiReadRegisters(TX_PCKT_INFO_ADDR, 1, &tempRegValue);
594 
595  /* Obtains and returns the TX sequence number */
596  return (tempRegValue >> 4) & 0x07;
597 
598 }
599 
606 {
607  uint8_t tmp;
608  s_assert_param(IS_SFUNCTIONAL_STATE(xExtendedLenField));
609 
610  S2LPSpiReadRegisters(PCKTCTRL4_ADDR, 1, &tmp);
611  if(xExtendedLenField == S_ENABLE) {
612  tmp |= LEN_WID_REGMASK;
613  }
614  else {
615  tmp &= ~LEN_WID_REGMASK;
616  }
617  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL4_ADDR, 1, &tmp);
618 }
619 
620 
627 {
628  uint8_t tmp;
629  s_assert_param(IS_SFUNCTIONAL_STATE(xSwapSymbol));
630 
631  S2LPSpiReadRegisters(PCKTCTRL3_ADDR, 1, &tmp);
632  if(xSwapSymbol == S_ENABLE) {
633  tmp |= FSK4_SYM_SWAP_REGMASK;
634  }
635  else {
636  tmp &= ~FSK4_SYM_SWAP_REGMASK;
637  }
638  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL3_ADDR, 1, &tmp);
639 }
640 
648 {
649  uint8_t tmp;
650  s_assert_param(IS_SFUNCTIONAL_STATE(xEnableSwap));
651 
652  S2LPSpiReadRegisters(PCKTCTRL3_ADDR, 1, &tmp);
653  if(xEnableSwap == S_ENABLE) {
654  tmp |= BYTE_SWAP_REGMASK;
655  }
656  else {
657  tmp &= ~BYTE_SWAP_REGMASK;
658  }
659  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL3_ADDR, 1, &tmp);
660 }
661 
669 {
670  uint8_t tmp;
671  s_assert_param(IS_SFUNCTIONAL_STATE(xEnableSwap));
672 
673  S2LPSpiReadRegisters(PCKTCTRL3_ADDR, 1, &tmp);
674  tmp&=0xFC;
675 
676  if(xEnableSwap == S_DISABLE) {
677  tmp |= 0x01;
678  }
679 
680  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL3_ADDR, 1, &tmp);
681 }
682 
683 
684 
691 {
692  uint8_t tmp;
693  s_assert_param(IS_SFUNCTIONAL_STATE(xVarLen));
694 
695  S2LPSpiReadRegisters(PCKTCTRL2_ADDR, 1, &tmp);
696  if(xVarLen == S_ENABLE) {
697  tmp |= FIX_VAR_LEN_REGMASK;
698  }
699  else {
700  tmp &= ~FIX_VAR_LEN_REGMASK;
701  }
702  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL2_ADDR, 1, &tmp);
703 }
704 
705 
712 {
713  uint8_t tmp;
714  s_assert_param(IS_PKT_CRC_MODE(xPktCrcMode));
715 
716  S2LPSpiReadRegisters(PCKTCTRL1_ADDR, 1, &tmp);
717  tmp &= ~CRC_MODE_REGMASK;
718  tmp |= (uint8_t)xPktCrcMode;
719  S2LPSpiWriteRegisters(PCKTCTRL1_ADDR, 1, &tmp);
720 
721 }
722 
723 
730 {
731  uint8_t tmp;
732  S2LPSpiReadRegisters(PCKTCTRL1_ADDR, 1, &tmp);
733  tmp &= ~CRC_MODE_REGMASK;
734  return (PktCrcMode)tmp;
735 }
736 
737 
738 
748 {
749  uint8_t tmp;
750  s_assert_param(IS_SFUNCTIONAL_STATE(xSecondarySync));
751 
752  S2LPSpiReadRegisters(PCKTCTRL1_ADDR, 1, &tmp);
753  if(xSecondarySync == S_ENABLE) {
754  tmp |= SECOND_SYNC_SEL_REGMASK;
755  }
756  else {
757  tmp &= ~SECOND_SYNC_SEL_REGMASK;
758  }
759  g_xStatus = S2LPSpiWriteRegisters(PCKTCTRL1_ADDR, 1, &tmp);
760 
761 }
762 
763 
771 {
772  uint8_t tmp;
773  s_assert_param(IS_SFUNCTIONAL_STATE(xNewState));
774 
775  S2LPSpiReadRegisters(PROTOCOL1_ADDR, 1, &tmp);
776  if(xNewState == S_ENABLE) {
777  tmp |= AUTO_PCKT_FLT_REGMASK;
778  }
779  else {
780  tmp &= ~AUTO_PCKT_FLT_REGMASK;
781  }
782  g_xStatus = S2LPSpiWriteRegisters(PROTOCOL1_ADDR, 1, &tmp);
783 }
784 
785 
786 
793 {
794  uint8_t tmp;
795  s_assert_param(IS_SFUNCTIONAL_STATE(xNewState));
796 
797  S2LPSpiReadRegisters(PROTOCOL0_ADDR, 1, &tmp);
798  if(xNewState == S_ENABLE) {
799  tmp |= PERS_RX_REGMASK;
800  }
801  else {
802  tmp &= ~PERS_RX_REGMASK;
803  }
804  g_xStatus = S2LPSpiWriteRegisters(PROTOCOL0_ADDR, 1, &tmp);
805 }
806 
807 
814 {
815  uint8_t tmp;
816  s_assert_param(IS_SFUNCTIONAL_STATE(xNewState));
817 
818  S2LPSpiReadRegisters(PCKT_FLT_OPTIONS_ADDR, 1, &tmp);
819  if(xNewState == S_ENABLE) {
820  tmp |= SOURCE_ADDR_FLT_REGMASK;
821  }
822  else {
823  tmp &= ~SOURCE_ADDR_FLT_REGMASK;
824  }
825  g_xStatus = S2LPSpiWriteRegisters(PCKT_FLT_OPTIONS_ADDR, 1, &tmp);
826 }
827 
828 
829 
835 void S2LPSetDualSyncWords(uint32_t lSyncWords)
836 {
837  uint8_t tmpBuffer[4];
838 
839  /* Split the 32-bit value in 4 8-bit values */
840  for(uint8_t i=0 ; i<4 ; i++) {
841  tmpBuffer[i]=(uint8_t)(lSyncWords>>(8*i));
842  }
843 
844  g_xStatus = S2LPSpiWriteRegisters(PCKT_FLT_GOALS3_ADDR, 4, tmpBuffer);
845 }
846 
847 
853 void S2LPGetDualSyncWords(uint32_t* lSyncWords)
854 {
855  uint8_t tmpBuffer[4];
856 
857  g_xStatus = S2LPSpiReadRegisters(PCKT_FLT_GOALS3_ADDR, 4, tmpBuffer);
858  *lSyncWords = ((uint32_t)tmpBuffer[0]<<24) | ((uint32_t)tmpBuffer[1]<<16) | ((uint32_t)tmpBuffer[2]<<8) | ((uint32_t)tmpBuffer[3]);
859 }
860 
861 
876 /******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/
#define TX_PCKT_INFO_ADDR
TX_PCKT_INFO register.
Definition: S2LP_Regs.h:1585
uint8_t S2LPGetReceivedDestinationAddress(void)
Get the received destination address.
void S2LPPacketHandlerFec(SFunctionalState xNewState)
Enable or Disable the FEC encoding.
void S2LPPacketHandlerSwapFifoEndianess(SFunctionalState xEnableSwap)
Change the FIFO endianness .
void S2LPPacketHandlerManchester(SFunctionalState xNewState)
Enable or Disable the MANCHESTER encoding.
void S2LPSetDualSyncWords(uint32_t lSyncWords)
Set the secondary sync word.
#define PCKT_FLT_GOALS4_ADDR
PCKT_FLT_GOALS4 register.
Definition: S2LP_Regs.h:806
void S2LPPacketHandlerSetTxMode(DirectTx xDirectTx)
Set the TX mode of S2LP.
void S2LPSetRxSourceMask(uint8_t mask)
Set the SOURCE_MASK .
uint8_t S2LPGetMulticastAddress(void)
Get the MULTICAST_ADDRESS set on the chip.
uint8_t S2LPGetBroadcastAddress(void)
Get the BROADCAST_ADDRESS set on the chip.
SFunctionalState
S2LP Functional state. Used to enable or disable a specific option.
Definition: S2LP_Types.h:67
void S2LPPacketHandlerSelectSecondarySync(SFunctionalState xSecondarySync)
Select the secondary sync mode. In TX if enabled: it will send the secondary sync word (from the PCKT...
#define PCKT_FLT_GOALS1_ADDR
PCKT_FLT_GOALS1 register.
Definition: S2LP_Regs.h:845
uint8_t S2LPGetRxSourceReferenceAddress(void)
Get the SOURCE_REFERENCE set on the chip.
#define PROTOCOL1_ADDR
PROTOCOL1 register.
Definition: S2LP_Regs.h:685
void S2LPPacketHandler3OutOf6(SFunctionalState xNewState)
Enable or Disable the 3o6 encoding.
#define PCKTCTRL6_ADDR
PCKTCTRL6 register.
Definition: S2LP_Regs.h:437
uint8_t S2LPGetReceivedSourceAddress(void)
Get the received source address.
#define PCKTCTRL4_ADDR
PCKTCTRL4 register.
Definition: S2LP_Regs.h:467
void S2LPPacketHandlerSwap4FSKSymbol(SFunctionalState xSwapSymbol)
Swap the 4FSK symbol mapping.
#define PCKT_FLT_GOALS0_ADDR
PCKT_FLT_GOALS0 register.
Definition: S2LP_Regs.h:858
void S2LPSetMyAddress(uint8_t address)
Set the MY_ADDRESS (source address that will be transmitted).
#define PCKTCTRL2_ADDR
PCKTCTRL2 register.
Definition: S2LP_Regs.h:508
void S2LPSetRxSourceReferenceAddress(uint8_t address)
Set the SOURCE_REFERENCEK.
void S2LPPacketHandlerSetRxPersistentMode(SFunctionalState xNewState)
Set the RX persistent mode. The device will be ever in RX unles an abort command comes.
#define RX_ADDRE_FIELD0_ADDR
RX_ADDRE_FIELD0 register.
Definition: S2LP_Regs.h:1760
#define SYNC3_ADDR
SYNC3 register.
Definition: S2LP_Regs.h:573
void S2LPPacketHandlerSetVariableLength(SFunctionalState xVarLen)
Set the variable length mode.
void S2LPSetBroadcastAddress(uint8_t address)
Set the BROADCAST_ADDRESS set on the chip.
void S2LPSetSyncWords(uint32_t lSyncWords, uint8_t cSyncLength)
Set the SYNC_WORD.
Configuration and management of S2-LP WMbus packets.
uint8_t S2LPGetMyAddress(void)
Get the MY_ADDRESS set on the chip.
#define PCKTCTRL1_ADDR
PCKTCTRL1 register.
Definition: S2LP_Regs.h:530
uint16_t S2LPGetPreambleLength(void)
Return the PREAMBLE field Length mode for S2LP packets.
DirectTx
Direct transmission mode enumeration for SPIRIT.
void S2LPPacketHandlerSetCrcMode(PktCrcMode xPktCrcMode)
Set the CRC mode.
PktCrcMode S2LPPacketHandlerGetCrcMode(void)
Get the CRC mode.
Configuration and management of the common features of S2-LP packets.
void S2LPSetSyncLength(uint8_t cSyncLength)
Set the SYNC field Length for S2LP packets.
void S2LPGetDualSyncWords(uint32_t *lSyncWords)
Get the secondary sync word.
void S2LPGetSyncWords(uint32_t *lSyncWords, uint8_t *cSyncLength)
Get the SYNC_WORD.
#define PROTOCOL0_ADDR
PROTOCOL0 register.
Definition: S2LP_Regs.h:709
uint8_t S2LPGetSyncLength(void)
Return the SYNC field Length for S2LP packets.
void S2LPPktCommonFilterOnCrc(SFunctionalState xNewState)
Enable or Disable the filtering on CRC.
void S2LPPacketHandlerSetSrcAddrFlt(SFunctionalState xNewState)
Set the source address filtering.
volatile S2LPStatus g_xStatus
S2LP Status global variable. This global variable of S2LPStatus type is updated on every SPI transact...
Definition: S2LP_Types.c:82
uint8_t S2LPPacketHandlerGetTransmittedSeqNumber(void)
Returns the sequence number of the transmitted packet.
void S2LPPacketHandlerSetRxMode(DirectRx xDirectRx)
Set the DirectRF RX mode of S2LP.
WMbusSubmode S2LPPktWMbusGetSubmode(void)
Return the WMBUS submode used.
#define PCKTCTRL3_ADDR
PCKTCTRL3 register.
Definition: S2LP_Regs.h:485
#define PCKT_FLT_GOALS3_ADDR
PCKT_FLT_GOALS3 register.
Definition: S2LP_Regs.h:819
#define PCKT_FLT_GOALS2_ADDR
PCKT_FLT_GOALS2 register.
Definition: S2LP_Regs.h:832
PktCrcMode
CRC length in bytes enumeration.
#define PCKT_FLT_OPTIONS_ADDR
PCKT_FLT_OPTIONS register.
Definition: S2LP_Regs.h:788
void S2LPSetPreambleLength(uint16_t cPreambleLength)
Set the PREAMBLE field Length mode for S2LP packets.
uint8_t S2LPGetRxSourceMask(void)
Get the SOURCE_MASK set on the chip.
void S2LPPacketHandlerWhitening(SFunctionalState xNewState)
Enable or Disable WHITENING for S2LP packets.
Header file for low level S2LP SPI driver.
void S2LPPacketHandlerSetAutoPcktFilter(SFunctionalState xNewState)
Enable or Disable the auto packet filter mechanisms.
void S2LPPacketHandlerSetExtendedLenField(SFunctionalState xExtendedLenField)
Set the extended length field in case of variable length.
DirectRx
Direct receive mode enumeration for SPIRIT.
void S2LPPacketHandlerSwapPreamblePattern(SFunctionalState xEnableSwap)
Swap preamble pattern.
uint8_t S2LPGetPacketFormat(void)
Get the packet format.
void S2LPSetMulticastAddress(uint8_t address)
Set the MULTICAST_ADDRESS set on the chip.
DirectTx S2LPPacketHandlerGetTxMode(void)
Return the DirectRF TX mode of S2LP.
#define RX_ADDRE_FIELD1_ADDR
RX_ADDRE_FIELD1 register.
Definition: S2LP_Regs.h:1747
DirectRx S2LPPacketHandlerGetRxMode(void)
Return the DirectRF RX mode of S2LP.