42 #ifndef __TSCH_ASN_H__ 43 #define __TSCH_ASN_H__ 56 uint16_t asn_ms1b_remainder;
62 #define TSCH_ASN_INIT(asn, ms1b_, ls4b_) do { \ 63 (asn).ms1b = (ms1b_); \ 64 (asn).ls4b = (ls4b_); \ 68 #define TSCH_ASN_INC(asn, inc) do { \ 69 uint32_t new_ls4b = (asn).ls4b + (inc); \ 70 if(new_ls4b < (asn).ls4b) { (asn).ms1b++; } \ 71 (asn).ls4b = new_ls4b; \ 75 #define TSCH_ASN_DEC(asn, dec) do { \ 76 uint32_t new_ls4b = (asn).ls4b - (dec); \ 77 if(new_ls4b > (asn).ls4b) { (asn).ms1b--; } \ 78 (asn).ls4b = new_ls4b; \ 82 #define TSCH_ASN_DIFF(asn1, asn2) \ 83 ((asn1).ls4b - (asn2).ls4b) 86 #define TSCH_ASN_DIVISOR_INIT(div, val_) do { \ 88 (div).asn_ms1b_remainder = ((0xffffffff % (val_)) + 1) % (val_); \ 93 #define TSCH_ASN_MOD(asn, div) \ 94 ((uint16_t)((asn).ls4b % (div).val) \ 95 + (uint16_t)((asn).ms1b * (div).asn_ms1b_remainder % (div).val)) \ For quick modulo operation on ASN.
The ASN is an absolute slot number over 5 bytes.