Skip to content

Commit e820af5

Browse files
authored
Added support for Regulatory_Domain_IN_866 (ExpressLRS#683)
India currently delicensed the 865-867 MHz band for use with: * a maximum of 1W Transmitter power * 4Watts Effective Radiated Power * 200Khz carrier bandwidth as per: https://dot.gov.in/sites/default/files/Delicensing%20in%20865-867%20MHz%20band%20%5BGSR%20564%20%28E%29%5D_0.pdf This commit partially adds support towards the Indian regulation. Fixes ExpressLRS#426
1 parent 1be2abd commit e820af5

13 files changed

Lines changed: 37 additions & 15 deletions

File tree

src/lib/FHSS/FHSS.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ void FHSSrandomiseFHSSsequence(long seed)
4545
Serial.println("Setting 915MHz Mode");
4646
#elif defined Regulatory_Domain_EU_868
4747
Serial.println("Setting 868MHz Mode");
48+
#elif defined Regulatory_Domain_IN_866
49+
Serial.println("Setting 866MHz Mode");
4850
#elif defined Regulatory_Domain_AU_433
4951
Serial.println("Setting 433MHz EU Mode");
5052
#elif defined Regulatory_Domain_EU_433

src/lib/FHSS/FHSS.h

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#pragma once
22

3-
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
3+
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
44
#include "SX127xDriver.h"
55
#elif Regulatory_Domain_ISM_2400
66
#include "SX1280Driver.h"
@@ -20,8 +20,10 @@
2020
#define Regulatory_Domain_Index 5
2121
#elif defined Regulatory_Domain_ISM_2400
2222
#define Regulatory_Domain_Index 6
23-
#else
23+
#elif defined Regulatory_Domain_IN_866
2424
#define Regulatory_Domain_Index 7
25+
#else
26+
#define Regulatory_Domain_Index 8
2527
#endif
2628

2729
extern volatile uint8_t FHSSptr;
@@ -88,6 +90,19 @@ const uint32_t FHSSfreqs[] = {
8890
FREQ_HZ_TO_REG_VAL(868525000), // Band H3, 868.7-869.2MHz, 0.1% dutycycle or CSMA, 25mW EIRP
8991
FREQ_HZ_TO_REG_VAL(869050000),
9092
FREQ_HZ_TO_REG_VAL(869575000)};
93+
#elif defined Regulatory_Domain_IN_866
94+
/**
95+
* India currently delicensed the 865-867 MHz band with a maximum of 1W Transmitter power,
96+
* 4Watts Effective Radiated Power and 200Khz carrier bandwidth as per
97+
* https://dot.gov.in/sites/default/files/Delicensing%20in%20865-867%20MHz%20band%20%5BGSR%20564%20%28E%29%5D_0.pdf .
98+
* There is currently no mention of Direct-sequence spread spectrum,
99+
* So these frequencies are a subset of Regulatory_Domain_EU_868 frequencies.
100+
*/
101+
const uint32_t FHSSfreqs[] = {
102+
FREQ_HZ_TO_REG_VAL(865375000),
103+
FREQ_HZ_TO_REG_VAL(865900000),
104+
FREQ_HZ_TO_REG_VAL(866425000),
105+
FREQ_HZ_TO_REG_VAL(866950000)};
91106
#elif defined Regulatory_Domain_EU_433
92107
/* Frequency band G, taken from https://wetten.overheid.nl/BWBR0036378/2016-12-28#Bijlagen
93108
* Note: As is the case with the 868Mhz band, these frequencies only comply to the license free portion

src/lib/POWERMGNT/POWERMGNT.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "targets.h"
44

55

6-
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
6+
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
77
extern SX127xDriver Radio;
88
#elif Regulatory_Domain_ISM_2400
99
extern SX1280Driver Radio;

src/lib/POWERMGNT/POWERMGNT.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "targets.h"
55
#include "DAC.h"
66

7-
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
7+
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
88
#include "SX127xDriver.h"
99
#elif Regulatory_Domain_ISM_2400
1010
#include "SX1280Driver.h"

src/lua/ELRS.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ local RFfreq = {
7474
editable = false,
7575
name = 'RF Freq',
7676
selected = 99,
77-
list = {'915 AU', '915 FCC', '868 EU', '433 AU', '433 EU', '2.4G ISM'},
78-
values = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06},
79-
max_allowed = 6,
77+
list = {'915 AU', '915 FCC', '868 EU', '433 AU', '433 EU', '2.4G ISM', '866 IN'},
78+
values = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07},
79+
max_allowed = 7,
8080
}
8181

8282
local function binding(item, event)

src/python/build_flags.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,9 @@ def get_git_sha():
133133
elif fnmatch.filter(env['BUILD_FLAGS'], '*Regulatory_Domain_EU_868*'):
134134
sys.stdout.write("\u001b[32mBuilding for SX1276 868EU\n")
135135

136+
elif fnmatch.filter(env['BUILD_FLAGS'], '*Regulatory_Domain_IN_866*'):
137+
sys.stdout.write("\u001b[32mBuilding for SX1276 866IN\n")
138+
136139
elif fnmatch.filter(env['BUILD_FLAGS'], '*Regulatory_Domain_AU_433*'):
137140
sys.stdout.write("\u001b[32mBuilding for SX1278 433AU\n")
138141

src/src/ESP32_WebUpdate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "targets.h"
44

5-
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
5+
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
66
#include "SX127xDriver.h"
77
extern SX127xDriver Radio;
88
#endif

src/src/ESP8266_WebUpdate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifdef PLATFORM_ESP8266
22
#include "ESP8266_WebUpdate.h"
33

4-
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
4+
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
55
#include "SX127xDriver.h"
66
extern SX127xDriver Radio;
77
#endif

src/src/common.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "common.h"
22

3-
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
3+
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
44

55
#include "SX127xDriver.h"
66
extern SX127xDriver Radio;

src/src/common.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
#include "FHSS.h"
66

7-
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
7+
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
88
#include "SX127xDriver.h"
99
#endif
1010

@@ -85,8 +85,7 @@ typedef struct expresslrs_rf_pref_params_s
8585
} expresslrs_rf_pref_params_s;
8686

8787
#ifndef UNIT_TEST
88-
89-
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
88+
#if defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || defined(Regulatory_Domain_FCC_915) || defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433)
9089
#define RATE_MAX 4
9190
#define RATE_DEFAULT 0
9291
typedef struct expresslrs_mod_settings_s

0 commit comments

Comments
 (0)