Skip to content

Commit 9479bb9

Browse files
committed
Add commands to directly modify channel mask
1 parent 8829863 commit 9479bb9

File tree

3 files changed

+124
-1
lines changed

3 files changed

+124
-1
lines changed

Projects/Multi/Applications/LoRa/AT_Slave/inc/at.h

+31-1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ typedef enum eATEerror
127127
#define AT_TCONF "+TCONF"
128128
#define AT_TOFF "+TOFF"
129129
#define AT_CERTIF "+CERTIF"
130+
#define AT_CHANMASK "+CHANMASK"
131+
#define AT_CHANDEFMASK "+CHANDEFMASK"
130132

131133
/* Exported functions ------------------------------------------------------- */
132134

@@ -671,7 +673,35 @@ ATEerror_t at_test_get_lora_config(const char *param);
671673
* @retval AT_OK
672674
*/
673675
ATEerror_t at_Certif( const char *param );
674-
676+
677+
/**
678+
* @brief Gets the current region's channel mask, note this is reset when changing regions
679+
* @param String parameter
680+
* @retval AT_OK, or an appropriate AT_xxx error code
681+
*/
682+
ATEerror_t at_ChannelMask_get(const char *param);
683+
684+
/**
685+
* @brief Sets the current region's channel mask, note this is reset when changing regions
686+
* @param String parameter
687+
* @retval AT_OK, or an appropriate AT_xxx error code
688+
*/
689+
ATEerror_t at_ChannelMask_set(const char *param);
690+
691+
/**
692+
* @brief Gets the current region's default mask, note this is reset when changing regions
693+
* @param String parameter
694+
* @retval AT_OK, or an appropriate AT_xxx error code
695+
*/
696+
ATEerror_t at_ChannelDefaultMask_get(const char *param);
697+
698+
/**
699+
* @brief Sets the current region's channel mask, note this is reset when changing regions
700+
* @param String parameter
701+
* @retval AT_OK, or an appropriate AT_xxx error code
702+
*/
703+
ATEerror_t at_ChannelDefaultMask_set(const char *param);
704+
675705
#ifdef __cplusplus
676706
}
677707
#endif

Projects/Multi/Applications/LoRa/AT_Slave/src/at.c

+71
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,77 @@ ATEerror_t at_Certif( const char *param )
329329
return AT_OK;
330330
}
331331

332+
ATEerror_t at_ChannelMask_get(const char *param)
333+
{
334+
MibRequestConfirm_t mib;
335+
LoRaMacStatus_t status;
336+
337+
mib.Type = MIB_CHANNELS_MASK;
338+
status = LoRaMacMibGetRequestConfirm(&mib);
339+
CHECK_STATUS(status);
340+
AT_PRINTF("+OK=");
341+
AT_PRINTF("%04x%04x%04x%04x%04x%04x\r",
342+
mib.Param.ChannelsMask[0], mib.Param.ChannelsMask[1], mib.Param.ChannelsMask[2], mib.Param.ChannelsMask[3],
343+
mib.Param.ChannelsMask[4], mib.Param.ChannelsMask[5]);
344+
345+
return AT_OK;
346+
}
347+
348+
ATEerror_t at_ChannelMask_set(const char *param)
349+
{
350+
MibRequestConfirm_t mib;
351+
LoRaMacStatus_t status;
352+
uint16_t channelsMask[6];
353+
mib.Type = MIB_CHANNELS_MASK;
354+
mib.Param.ChannelsMask = channelsMask;
355+
if (tiny_sscanf(param, "%04hx%04hx%04hx%04hx%04hx%04hx",
356+
&channelsMask[0], &channelsMask[1], &channelsMask[2], &channelsMask[3],
357+
&channelsMask[4], &channelsMask[5]) != 6)
358+
{
359+
return AT_PARAM_ERROR;
360+
}
361+
status = LoRaMacMibSetRequestConfirm(&mib);
362+
CHECK_STATUS(status);
363+
364+
return AT_OK;
365+
}
366+
367+
ATEerror_t at_ChannelDefaultMask_get(const char *param)
368+
{
369+
MibRequestConfirm_t mib;
370+
LoRaMacStatus_t status;
371+
372+
mib.Type = MIB_CHANNELS_DEFAULT_MASK;
373+
status = LoRaMacMibGetRequestConfirm(&mib);
374+
CHECK_STATUS(status);
375+
AT_PRINTF("+OK=");
376+
AT_PRINTF("%04x%04x%04x%04x%04x%04x\r",
377+
mib.Param.ChannelsDefaultMask[0], mib.Param.ChannelsDefaultMask[1], mib.Param.ChannelsDefaultMask[2], mib.Param.ChannelsDefaultMask[3],
378+
mib.Param.ChannelsDefaultMask[4], mib.Param.ChannelsDefaultMask[5]);
379+
380+
return AT_OK;
381+
}
382+
383+
ATEerror_t at_ChannelDefaultMask_set(const char *param)
384+
{
385+
MibRequestConfirm_t mib;
386+
LoRaMacStatus_t status;
387+
uint16_t channelDefaultMask[6];
388+
mib.Type = MIB_CHANNELS_DEFAULT_MASK;
389+
mib.Param.ChannelsDefaultMask = channelDefaultMask;
390+
if (tiny_sscanf(param, "%04hx%04hx%04hx%04hx%04hx%04hx",
391+
&channelDefaultMask[0], &channelDefaultMask[1], &channelDefaultMask[2], &channelDefaultMask[3],
392+
&channelDefaultMask[4], &channelDefaultMask[5]) != 6)
393+
{
394+
return AT_PARAM_ERROR;
395+
}
396+
397+
status = LoRaMacMibSetRequestConfirm(&mib);
398+
CHECK_STATUS(status);
399+
400+
return AT_OK;
401+
}
402+
332403
ATEerror_t at_ADR_get(const char *param)
333404
{
334405
MibRequestConfirm_t mib;

Projects/Multi/Applications/LoRa/AT_Slave/src/command.c

+22
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,28 @@ static const struct ATCommand_s ATCommand[] =
633633
.set = at_return_error,
634634
.run = at_Certif,
635635
},
636+
637+
{
638+
.string = AT_CHANMASK,
639+
.size_string = sizeof(AT_CHANMASK) - 1,
640+
#ifndef NO_HELP
641+
.help_string = "AT"AT_CHANMASK ": Config the region's channel mask for the session\r\n",
642+
#endif
643+
.get = at_ChannelMask_get,
644+
.set = at_ChannelMask_set,
645+
.run = at_return_error,
646+
},
647+
648+
{
649+
.string = AT_CHANDEFMASK,
650+
.size_string = sizeof(AT_CHANDEFMASK) - 1,
651+
#ifndef NO_HELP
652+
.help_string = "AT"AT_CHANDEFMASK ": Config the region's channel default mask for the session\r\n",
653+
#endif
654+
.get = at_ChannelDefaultMask_get,
655+
.set = at_ChannelDefaultMask_set,
656+
.run = at_return_error,
657+
},
636658
};
637659

638660

0 commit comments

Comments
 (0)