diff --git a/include/wireless/ieee802154.h b/include/wireless/ieee802154.h index 3e6b5a131..ccb222a66 100644 --- a/include/wireless/ieee802154.h +++ b/include/wireless/ieee802154.h @@ -115,6 +115,9 @@ int ieee802154_getcca(int fd, FAR struct ieee802154_cca_s *cca); int ieee802154_setmaxretries(int fd, uint8_t retries); int ieee802154_getmaxretries(int fd, FAR uint8_t *retries); +int ieee802154_setfcslen(int fd, uint8_t fcslen); +int ieee802154_getfcslen(int fd, FAR uint8_t *fcslen); + int ieee802154_getdevmode(int fd, FAR enum ieee802154_devmode_e *devmode); int ieee802154_setassocpermit(int fd, bool assocpermit); @@ -200,6 +203,9 @@ int sixlowpan_setmaxretries(int sock, FAR const char *ifname, uint8_t retries); int sixlowpan_getmaxretries(int sock, FAR const char *ifname, FAR uint8_t *retries); +int sixlowpan_setfcslen(int sock, FAR const char *ifname, uint8_t fcslen); +int sixlowpan_getfcslen(int sock, FAR const char *ifname, FAR uint8_t *fcslen); + int sixlowpan_getdevmode(int fd, FAR const char *ifname, FAR enum ieee802154_devmode_e *devmode); diff --git a/wireless/ieee802154/libmac/ieee802154_getreq.c b/wireless/ieee802154/libmac/ieee802154_getreq.c index 11beeb17a..187b44465 100644 --- a/wireless/ieee802154/libmac/ieee802154_getreq.c +++ b/wireless/ieee802154/libmac/ieee802154_getreq.c @@ -209,3 +209,16 @@ int ieee802154_getmaxretries(int fd, FAR uint8_t *retries) return ret; } +int ieee802154_getfcslen(int fd, FAR uint8_t *fcslen) +{ + struct ieee802154_get_req_s req; + int ret; + + req.attr = IEEE802154_ATTR_PHY_FCS_LEN; + ret = ieee802154_get_req(fd, &req); + + *fcslen = req.attrval.phy.fcslen; + + return ret; +} + diff --git a/wireless/ieee802154/libmac/ieee802154_setreq.c b/wireless/ieee802154/libmac/ieee802154_setreq.c index 1b0b57e08..06d79637e 100644 --- a/wireless/ieee802154/libmac/ieee802154_setreq.c +++ b/wireless/ieee802154/libmac/ieee802154_setreq.c @@ -157,4 +157,14 @@ int ieee802154_setmaxretries(int fd, uint8_t retries) req.attrval.mac.max_retries = retries; return ieee802154_set_req(fd, &req); -} \ No newline at end of file +} + +int ieee802154_setfcslen(int fd, uint8_t fcslen) +{ + struct ieee802154_set_req_s req; + + req.attr = IEEE802154_ATTR_PHY_FCS_LEN; + req.attrval.phy.fcslen = fcslen; + + return ieee802154_set_req(fd, &req); +} diff --git a/wireless/ieee802154/libmac/sixlowpan_getreq.c b/wireless/ieee802154/libmac/sixlowpan_getreq.c index 31cce6600..333975391 100644 --- a/wireless/ieee802154/libmac/sixlowpan_getreq.c +++ b/wireless/ieee802154/libmac/sixlowpan_getreq.c @@ -227,4 +227,15 @@ int sixlowpan_getmaxretries(int sock, FAR const char *ifname, FAR uint8_t *retri return ret; } +int sixlowpan_getfcslen(int sock, FAR const char *ifname, FAR uint8_t *fcslen) +{ + struct ieee802154_get_req_s req; + int ret; + req.attr = IEEE802154_ATTR_PHY_FCS_LEN; + ret = sixlowpan_get_req(sock, ifname, &req); + + *fcslen = req.attrval.phy.fcslen; + + return ret; +} diff --git a/wireless/ieee802154/libmac/sixlowpan_setreq.c b/wireless/ieee802154/libmac/sixlowpan_setreq.c index 5942c0267..dde9e8873 100644 --- a/wireless/ieee802154/libmac/sixlowpan_setreq.c +++ b/wireless/ieee802154/libmac/sixlowpan_setreq.c @@ -165,3 +165,13 @@ int sixlowpan_setmaxretries(int sock, FAR const char *ifname, uint8_t retries) return sixlowpan_set_req(sock, ifname, &req); } + +int sixlowpan_setfcslen(int sock, FAR const char *ifname, uint8_t fcslen) +{ + struct ieee802154_set_req_s req; + + req.attr = IEEE802154_ATTR_PHY_FCS_LEN; + req.attrval.phy.fcslen = fcslen; + + return sixlowpan_set_req(sock, ifname, &req); +}