Skip to content

Commit

Permalink
Added support for new release of ARIB STD-T108 Ver1.4 under AS923 region
Browse files Browse the repository at this point in the history
  • Loading branch information
mluis1 committed Nov 17, 2022
1 parent 26dd83c commit 0062112
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 14 deletions.
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@

// Default channel plan for region AS923. Possible selections:
// CHANNEL_PLAN_GROUP_AS923_1, CHANNEL_PLAN_GROUP_AS923_2, CHANNEL_PLAN_GROUP_AS923_3,
// CHANNEL_PLAN_GROUP_AS923_4, CHANNEL_PLAN_GROUP_AS923_1_JP
// CHANNEL_PLAN_GROUP_AS923_4, CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT,
// CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_DC, CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC
"REGION_AS923_DEFAULT_CHANNEL_PLAN":"CHANNEL_PLAN_GROUP_AS923_1",

// Default channel plan for region CN470. Possible selections:
Expand Down
2 changes: 1 addition & 1 deletion src/mac/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ option(REGION_RU864 "Region RU864" OFF)
set(REGION_LIST REGION_EU868 REGION_US915 REGION_CN779 REGION_EU433 REGION_AU915 REGION_AS923 REGION_CN470 REGION_KR920 REGION_IN865 REGION_RU864)

# AS923 Channel Plan
set(REGION_AS923_DEFAULT_CHANNEL_PLAN_LIST CHANNEL_PLAN_GROUP_AS923_1 CHANNEL_PLAN_GROUP_AS923_2 CHANNEL_PLAN_GROUP_AS923_3 CHANNEL_PLAN_GROUP_AS923_4 CHANNEL_PLAN_GROUP_AS923_1_JP)
set(REGION_AS923_DEFAULT_CHANNEL_PLAN_LIST CHANNEL_PLAN_GROUP_AS923_1 CHANNEL_PLAN_GROUP_AS923_2 CHANNEL_PLAN_GROUP_AS923_3 CHANNEL_PLAN_GROUP_AS923_4 CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_DC CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC)
set(REGION_AS923_DEFAULT_CHANNEL_PLAN CHANNEL_PLAN_GROUP_AS923_1 CACHE STRING "Default channel plan for AS923 is CHANNEL_PLAN_GROUP_AS923_1")
set_property(CACHE REGION_AS923_DEFAULT_CHANNEL_PLAN PROPERTY STRINGS ${REGION_AS923_DEFAULT_CHANNEL_PLAN_LIST})

Expand Down
108 changes: 98 additions & 10 deletions src/mac/region/RegionAS923.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@
*/
#define AS923_CARRIER_SENSE_TIME 5

/*!
* Specifies the reception bandwidth to be used while executing the LBT
* Max channel bandwidth is 200 kHz
*/
#define AS923_LBT_RX_BANDWIDTH 200000

#ifndef REGION_AS923_DEFAULT_CHANNEL_PLAN
#define REGION_AS923_DEFAULT_CHANNEL_PLAN CHANNEL_PLAN_GROUP_AS923_1
#endif
Expand All @@ -64,8 +70,8 @@
// -1.8MHz
#define REGION_AS923_FREQ_OFFSET ( ( ~( 0xFFFFB9B0 ) + 1 ) * 100 )

#define AS923_MIN_RF_FREQUENCY 915000000
#define AS923_MAX_RF_FREQUENCY 928000000
#define AS923_MIN_RF_FREQUENCY 920000000
#define AS923_MAX_RF_FREQUENCY 923000000

#elif ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_3 )

Expand All @@ -74,7 +80,7 @@
#define REGION_AS923_FREQ_OFFSET ( ( ~( 0xFFFEFE30 ) + 1 ) * 100 )

#define AS923_MIN_RF_FREQUENCY 915000000
#define AS923_MAX_RF_FREQUENCY 928000000
#define AS923_MAX_RF_FREQUENCY 921000000

#elif ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_4 )

Expand All @@ -85,9 +91,9 @@
#define AS923_MIN_RF_FREQUENCY 917000000
#define AS923_MAX_RF_FREQUENCY 920000000

#elif ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP )
#elif ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT )

// Channel plan CHANNEL_PLAN_GROUP_AS923_1_JP
// Channel plan CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT

#define REGION_AS923_FREQ_OFFSET 0

Expand All @@ -98,11 +104,77 @@
#define AS923_MIN_RF_FREQUENCY 920600000
#define AS923_MAX_RF_FREQUENCY 923400000

#undef AS923_TX_MAX_DATARATE
#define AS923_TX_MAX_DATARATE DR_5

#undef AS923_RX_MAX_DATARATE
#define AS923_RX_MAX_DATARATE DR_5

#undef AS923_DEFAULT_MAX_EIRP
#define AS923_DEFAULT_MAX_EIRP 13.0f

/*!
* Specifies the reception bandwidth to be used while executing the LBT
* Max channel bandwidth is 200 kHz
* STD-T108 Ver1.4 does not require dwell-time enforcement when using LBT on channels 28 to 38
*/
#define AS923_LBT_RX_BANDWIDTH 200000
#undef AS923_DEFAULT_UPLINK_DWELL_TIME
#define AS923_DEFAULT_UPLINK_DWELL_TIME 0

#elif ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_DC )

/*
* STD-T108 Ver1.4 allows the use of channels 24 to 38 without LBT.
* However a duty cycle enforcement must be in place
*/

// Channel plan CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_DC

#define REGION_AS923_FREQ_OFFSET 0

/*!
* Restrict AS923 frequencies to channels 24 to 38
* Center frequencies 920.6 MHz to 923.4 MHz @ 200 kHz max bandwidth
*/
#define AS923_MIN_RF_FREQUENCY 920600000
#define AS923_MAX_RF_FREQUENCY 923400000

#undef AS923_TX_MAX_DATARATE
#define AS923_TX_MAX_DATARATE DR_5

#undef AS923_RX_MAX_DATARATE
#define AS923_RX_MAX_DATARATE DR_5

#undef AS923_DEFAULT_MAX_EIRP
#define AS923_DEFAULT_MAX_EIRP 13.0f

/*!
* STD-T108 Ver1.4 does not require dwell-time enforcement when using DC on channels 28 to 38
*/
#undef AS923_DEFAULT_UPLINK_DWELL_TIME
#define AS923_DEFAULT_UPLINK_DWELL_TIME 0

/*!
* Enable duty cycle enforcement
*/
#undef AS923_DUTY_CYCLE_ENABLED
#define AS923_DUTY_CYCLE_ENABLED 1

#elif ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC )

/*
* STD-T108 Ver1.4 allows the use of channels 37 to 61 with LBT and DC.
* However dwell time enforcement must be enabled
*/

// Channel plan CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC

#define REGION_AS923_FREQ_OFFSET 0

/*!
* Restrict AS923 frequencies to channels 37 to 61
* Center frequencies 922.4 MHz to 928.0 MHz @ 200 kHz max bandwidth
*/
#define AS923_MIN_RF_FREQUENCY 922400000
#define AS923_MAX_RF_FREQUENCY 928000000

#undef AS923_TX_MAX_DATARATE
#define AS923_TX_MAX_DATARATE DR_5
Expand All @@ -113,6 +185,20 @@
#undef AS923_DEFAULT_MAX_EIRP
#define AS923_DEFAULT_MAX_EIRP 13.0f

/*!
* Enable duty cycle enforcement
*/
#undef AS923_DUTY_CYCLE_ENABLED
#define AS923_DUTY_CYCLE_ENABLED 1

/*!
* STD-T108 Ver1.4 requires a carrier sense time of at least 128 us on channels 37 to 61
*/
#undef AS923_CARRIER_SENSE_TIME
#define AS923_CARRIER_SENSE_TIME 1

#else
#error "Wrong default channel plan selected. Please review compiler options."
#endif

/*
Expand Down Expand Up @@ -415,7 +501,8 @@ void RegionAS923InitDefaults( InitDefaultsParams_t* params )
// Update the channels mask
RegionCommonChanMaskCopy( RegionNvmGroup2->ChannelsMask, RegionNvmGroup2->ChannelsDefaultMask, CHANNELS_MASK_SIZE );

#if ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP )
#if ( ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT ) || \
( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC ) )
RegionNvmGroup2->RssiFreeThreshold = AS923_RSSI_FREE_TH;
RegionNvmGroup2->CarrierSenseTime = AS923_CARRIER_SENSE_TIME;
#endif
Expand Down Expand Up @@ -937,7 +1024,8 @@ LoRaMacStatus_t RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_

if( status == LORAMAC_STATUS_OK )
{
#if ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP )
#if ( ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT ) || \
( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC ) )
// Executes the LBT algorithm when operating in Japan
uint8_t channelNext = 0;

Expand Down
16 changes: 14 additions & 2 deletions src/mac/region/RegionAS923.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,22 @@ extern "C"
#define CHANNEL_PLAN_GROUP_AS923_4 4

/*!
* Channel plan group AS923-1 for Japan
* Channel plan group AS923-1 for Japan - channels 24 to 38 Listen Before Talk
* AS923_FREQ_OFFSET = 0
*/
#define CHANNEL_PLAN_GROUP_AS923_1_JP 5
#define CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT 5

/*!
* Channel plan group AS923-1 for Japan - channels 24 to 38 Duty Cycle
* AS923_FREQ_OFFSET = 0
*/
#define CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_DC 6

/*!
* Channel plan group AS923-1 for Japan - channels 37 to 61 Listen Before Talk + Duty Cycle
* AS923_FREQ_OFFSET = 0
*/
#define CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC 7

/*!
* LoRaMac maximum number of channels
Expand Down

0 comments on commit 0062112

Please sign in to comment.