Skip to content

Commit 735da6d

Browse files
committed
Add commands to directly modify channel mask
1 parent c5e3703 commit 735da6d

File tree

3 files changed

+125
-0
lines changed
  • Projects/B-L072Z-LRWAN1/Applications/LoRa/AT_Slave/LoRaWAN/App

3 files changed

+125
-0
lines changed

Projects/B-L072Z-LRWAN1/Applications/LoRa/AT_Slave/LoRaWAN/App/inc/at.h

+31
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ typedef enum eATEerror
102102
#define AT_BTIME "+BTIME"
103103
#define AT_BGW "+BGW"
104104
#define AT_LTIME "+LTIME"
105+
#define AT_CHANMASK "+CHANMASK"
106+
#define AT_CHANDEFMASK "+CHANDEFMASK"
107+
105108
/* Exported functions ------------------------------------------------------- */
106109

107110
/**
@@ -639,6 +642,34 @@ ATEerror_t at_test_get_lora_config(const char *param);
639642
*/
640643
ATEerror_t at_Certif(const char *param);
641644

645+
/**
646+
* @brief Gets the current region's channel mask, note this is reset when changing regions
647+
* @param String parameter
648+
* @retval AT_OK, or an appropriate AT_xxx error code
649+
*/
650+
ATEerror_t at_ChannelMask_get(const char *param);
651+
652+
/**
653+
* @brief Sets the current region's channel mask, note this is reset when changing regions
654+
* @param String parameter
655+
* @retval AT_OK, or an appropriate AT_xxx error code
656+
*/
657+
ATEerror_t at_ChannelMask_set(const char *param);
658+
659+
/**
660+
* @brief Gets the current region's default mask, note this is reset when changing regions
661+
* @param String parameter
662+
* @retval AT_OK, or an appropriate AT_xxx error code
663+
*/
664+
ATEerror_t at_ChannelDefaultMask_get(const char *param);
665+
666+
/**
667+
* @brief Sets the current region's channel mask, note this is reset when changing regions
668+
* @param String parameter
669+
* @retval AT_OK, or an appropriate AT_xxx error code
670+
*/
671+
ATEerror_t at_ChannelDefaultMask_set(const char *param);
672+
642673
#ifdef __cplusplus
643674
}
644675
#endif

Projects/B-L072Z-LRWAN1/Applications/LoRa/AT_Slave/LoRaWAN/App/src/at.c

+72
Original file line numberDiff line numberDiff line change
@@ -1519,6 +1519,78 @@ ATEerror_t at_test_stop(const char *param)
15191519
{
15201520
return TST_stop();
15211521
}
1522+
1523+
ATEerror_t at_ChannelMask_get(const char *param)
1524+
{
1525+
MibRequestConfirm_t mib;
1526+
LoRaMacStatus_t status;
1527+
1528+
mib.Type = MIB_CHANNELS_MASK;
1529+
status = LoRaMacMibGetRequestConfirm(&mib);
1530+
CHECK_STATUS(status);
1531+
AT_PRINTF("%04x%04x%04x%04x%04x%04x\r\n",
1532+
mib.Param.ChannelsMask[0], mib.Param.ChannelsMask[1], mib.Param.ChannelsMask[2], mib.Param.ChannelsMask[3],
1533+
mib.Param.ChannelsMask[4], mib.Param.ChannelsMask[5]);
1534+
1535+
return AT_OK;
1536+
}
1537+
1538+
ATEerror_t at_ChannelMask_set(const char *param)
1539+
{
1540+
MibRequestConfirm_t mib;
1541+
LoRaMacStatus_t status;
1542+
uint16_t channelsMask[6];
1543+
mib.Type = MIB_CHANNELS_MASK;
1544+
mib.Param.ChannelsMask = channelsMask;
1545+
if (tiny_sscanf(param, "%04hx%04hx%04hx%04hx%04hx%04hx",
1546+
&channelsMask[0], &channelsMask[1], &channelsMask[2], &channelsMask[3],
1547+
&channelsMask[4], &channelsMask[5]) != 6)
1548+
{
1549+
return AT_PARAM_ERROR;
1550+
}
1551+
status = LoRaMacMibSetRequestConfirm(&mib);
1552+
CHECK_STATUS(status);
1553+
1554+
return AT_OK;
1555+
}
1556+
1557+
ATEerror_t at_ChannelDefaultMask_get(const char *param)
1558+
{
1559+
MibRequestConfirm_t mib;
1560+
LoRaMacStatus_t status;
1561+
1562+
mib.Type = MIB_CHANNELS_DEFAULT_MASK;
1563+
status = LoRaMacMibGetRequestConfirm(&mib);
1564+
CHECK_STATUS(status);
1565+
AT_PRINTF("%04x%04x%04x%04x%04x%04x\r\n",
1566+
mib.Param.ChannelsDefaultMask[0], mib.Param.ChannelsDefaultMask[1], mib.Param.ChannelsDefaultMask[2], mib.Param.ChannelsDefaultMask[3],
1567+
mib.Param.ChannelsDefaultMask[4], mib.Param.ChannelsDefaultMask[5]);
1568+
1569+
return AT_OK;
1570+
}
1571+
1572+
ATEerror_t at_ChannelDefaultMask_set(const char *param)
1573+
{
1574+
MibRequestConfirm_t mib;
1575+
LoRaMacStatus_t status;
1576+
uint16_t channelDefaultMask[6];
1577+
mib.Type = MIB_CHANNELS_DEFAULT_MASK;
1578+
mib.Param.ChannelsDefaultMask = channelDefaultMask;
1579+
if (tiny_sscanf(param, "%04hx%04hx%04hx%04hx%04hx%04hx",
1580+
&channelDefaultMask[0], &channelDefaultMask[1], &channelDefaultMask[2], &channelDefaultMask[3],
1581+
&channelDefaultMask[4], &channelDefaultMask[5]) != 6)
1582+
{
1583+
return AT_PARAM_ERROR;
1584+
}
1585+
1586+
status = LoRaMacMibSetRequestConfirm(&mib);
1587+
CHECK_STATUS(status);
1588+
1589+
return AT_OK;
1590+
}
1591+
1592+
1593+
15221594
/* Private functions ---------------------------------------------------------*/
15231595

15241596
static ATEerror_t translate_status(LoRaMacStatus_t status)

Projects/B-L072Z-LRWAN1/Applications/LoRa/AT_Slave/LoRaWAN/App/src/command.c

+22
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,28 @@ static const struct ATCommand_s ATCommand[] =
561561
.run = at_Certif,
562562
},
563563

564+
{
565+
.string = AT_CHANMASK,
566+
.size_string = sizeof(AT_CHANMASK) - 1,
567+
#ifndef NO_HELP
568+
.help_string = "AT"AT_CHANMASK ": Config the region's channel mask for the session\r\n",
569+
#endif
570+
.get = at_ChannelMask_get,
571+
.set = at_ChannelMask_set,
572+
.run = at_return_error,
573+
},
574+
575+
{
576+
.string = AT_CHANDEFMASK,
577+
.size_string = sizeof(AT_CHANDEFMASK) - 1,
578+
#ifndef NO_HELP
579+
.help_string = "AT"AT_CHANDEFMASK ": Config the region's channel default mask for the session\r\n",
580+
#endif
581+
.get = at_ChannelDefaultMask_get,
582+
.set = at_ChannelDefaultMask_set,
583+
.run = at_return_error,
584+
},
585+
564586
#ifdef LORAMAC_CLASSB_ENABLED
565587
{
566588
.string = AT_PGSLOT,

0 commit comments

Comments
 (0)