5353#include "lora/mac/region/RegionEU868.h"
5454#include "lora/mac/region/RegionCN470.h"
5555#include "lora/mac/region/RegionIN865.h"
56+ #include "lora/mac/region/RegionEU433.h"
5657
5758// openThread includes
5859#ifdef LORA_OPENTHREAD_ENABLED
@@ -1361,12 +1362,17 @@ static void lora_validate_frequency (uint32_t frequency) {
13611362 goto freq_error ;
13621363 }
13631364 break ;
1364- case LORAMAC_REGION_EU868 :
1365+ case LORAMAC_REGION_EU433 :
13651366 #if defined(LOPY4 )
1366- if (frequency < 410000000 || frequency > 870000000 ) {
1367+ if (frequency < 433000000 || frequency > 435000000 ) { // LoRa 433 - 434
1368+ goto freq_error ;
1369+ }
13671370 #else
1368- if ( frequency < 863000000 || frequency > 870000000 ) {
1371+ goto freq_error ;
13691372 #endif
1373+ break ;
1374+ case LORAMAC_REGION_EU868 :
1375+ if (frequency < 863000000 || frequency > 870000000 ) {
13701376 goto freq_error ;
13711377 }
13721378 break ;
@@ -1437,6 +1443,7 @@ static bool lora_validate_data_rate (uint32_t data_rate) {
14371443 case LORAMAC_REGION_AS923 :
14381444 case LORAMAC_REGION_EU868 :
14391445 case LORAMAC_REGION_AU915 :
1446+ case LORAMAC_REGION_EU433 :
14401447 case LORAMAC_REGION_CN470 :
14411448 case LORAMAC_REGION_IN865 :
14421449 if (data_rate > DR_6 ) {
@@ -1489,11 +1496,16 @@ static void lora_validate_device_class (DeviceClass_t device_class) {
14891496static void lora_validate_region (LoRaMacRegion_t region ) {
14901497 if (region != LORAMAC_REGION_AS923 && region != LORAMAC_REGION_AU915
14911498 && region != LORAMAC_REGION_EU868 && region != LORAMAC_REGION_US915
1492- && region != LORAMAC_REGION_CN470 && region != LORAMAC_REGION_IN865 ) {
1499+ && region != LORAMAC_REGION_IN865
1500+ #if defined(LOPY4 )
1501+ & & region != LORAMAC_REGION_EU433 && region != LORAMAC_REGION_CN470
1502+ #endif
1503+ ) {
14931504 nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "invalid region %d" , region ));
14941505 }
14951506}
14961507
1508+
14971509static void lora_set_config (lora_cmd_data_t * cmd_data ) {
14981510 lora_obj .stack_mode = cmd_data -> info .init .stack_mode ;
14991511 lora_obj .bandwidth = cmd_data -> info .init .bandwidth ;
@@ -1710,6 +1722,9 @@ static mp_obj_t lora_init_helper(lora_obj_t *self, const mp_arg_val_t *args) {
17101722 case LORAMAC_REGION_EU868 :
17111723 cmd_data .info .init .frequency = 868000000 ;
17121724 break ;
1725+ case LORAMAC_REGION_EU433 :
1726+ cmd_data .info .init .frequency = 433175000 ;
1727+ break ;
17131728 case LORAMAC_REGION_CN470 :
17141729 cmd_data .info .init .frequency = 470000000 ;
17151730 case LORAMAC_REGION_IN865 :
@@ -1735,6 +1750,9 @@ static mp_obj_t lora_init_helper(lora_obj_t *self, const mp_arg_val_t *args) {
17351750 case LORAMAC_REGION_EU868 :
17361751 cmd_data .info .init .tx_power = 14 ;
17371752 break ;
1753+ case LORAMAC_REGION_EU433 :
1754+ cmd_data .info .init .tx_power = 12 ;
1755+ break ;
17381756 default :
17391757 break ;
17401758 }
@@ -1894,6 +1912,7 @@ STATIC mp_obj_t lora_join(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *
18941912 break ;
18951913 case LORAMAC_REGION_CN470 :
18961914 case LORAMAC_REGION_EU868 :
1915+ case LORAMAC_REGION_EU433 :
18971916 case LORAMAC_REGION_IN865 :
18981917 dr = DR_5 ;
18991918 break ;
@@ -1925,6 +1944,7 @@ STATIC mp_obj_t lora_join(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *
19251944 goto dr_error ;
19261945 }
19271946 break ;
1947+ case LORAMAC_REGION_EU433 :
19281948 case LORAMAC_REGION_CN470 :
19291949 case LORAMAC_REGION_EU868 :
19301950 if (dr > DR_5 ) {
@@ -2506,6 +2526,7 @@ STATIC const mp_map_elem_t lora_locals_dict_table[] = {
25062526 { MP_OBJ_NEW_QSTR (MP_QSTR_US915 ), MP_OBJ_NEW_SMALL_INT (LORAMAC_REGION_US915 ) },
25072527 { MP_OBJ_NEW_QSTR (MP_QSTR_CN470 ), MP_OBJ_NEW_SMALL_INT (LORAMAC_REGION_CN470 ) },
25082528 { MP_OBJ_NEW_QSTR (MP_QSTR_IN865 ), MP_OBJ_NEW_SMALL_INT (LORAMAC_REGION_IN865 ) },
2529+ { MP_OBJ_NEW_QSTR (MP_QSTR_EU433 ), MP_OBJ_NEW_SMALL_INT (LORAMAC_REGION_EU433 ) },
25092530};
25102531
25112532STATIC MP_DEFINE_CONST_DICT (lora_locals_dict , lora_locals_dict_table );
@@ -2551,6 +2572,7 @@ static int lora_socket_socket (mod_network_socket_obj_t *s, int *_errno) {
25512572 switch (lora_obj .region ) {
25522573 case LORAMAC_REGION_AS923 :
25532574 case LORAMAC_REGION_EU868 :
2575+ case LORAMAC_REGION_EU433 :
25542576 case LORAMAC_REGION_CN470 :
25552577 dr = DR_5 ;
25562578 break ;
0 commit comments