Compare commits

..

4 Commits

Author SHA1 Message Date
Ricardo Guzman (Richonguzman) d4fc99466f update digi2000 2026-02-23 18:07:26 -03:00
Ricardo Guzman (Richonguzman) 41f09af7b5 digipeater logic improved 2026-02-23 17:32:52 -03:00
Ricardo Guzman (Richonguzman) 0eec028c5d update SENSOR BUS 2026-02-23 12:00:55 -03:00
Ricardo Guzman (Richonguzman) c48dd15bd6 better ADC and VEXT control 2026-02-23 11:14:42 -03:00
20 changed files with 135 additions and 148 deletions
+3 -3
View File
@@ -105,9 +105,9 @@ namespace BATTERY_Utils {
void getI2CVoltageSensorAddress() { void getI2CVoltageSensorAddress() {
uint8_t err, addr; uint8_t err, addr;
for(addr = 1; addr < 0x7F; addr++) { for(addr = 1; addr < 0x7F; addr++) {
#if defined(HELTEC_V3) || defined(HELTEC_V3_2) || defined(HELTEC_WSL_V3) || defined(HELTEC_WSL_V3_DISPLAY) #ifdef SENSOR_I2C_BUS
Wire1.beginTransmission(addr); SENSOR_I2C_BUS.beginTransmission(addr);
err = Wire1.endTransmission(); err = SENSOR_I2C_BUS.endTransmission();
#else #else
Wire.beginTransmission(addr); Wire.beginTransmission(addr);
err = Wire.endTransmission(); err = Wire.endTransmission();
+24 -29
View File
@@ -43,24 +43,29 @@ extern bool backupDigiMode;
namespace DIGI_Utils { namespace DIGI_Utils {
String cleanPathAsterisks(String path) {
String terms[] = {",WIDE1*", ",WIDE2*", "*"};
for (String term : terms) {
int index = path.indexOf(term);
if (index != -1) path.remove(index, term.length()); // less memory than: tempPath.replace("*", "");
}
return path;
}
String buildPacket(const String& path, const String& packet, bool thirdParty, bool crossFreq) { String buildPacket(const String& path, const String& packet, bool thirdParty, bool crossFreq) {
String stationCallsign = (Config.tacticalCallsign == "" ? Config.callsign : Config.tacticalCallsign); String stationCallsign = (Config.tacticalCallsign == "" ? Config.callsign : Config.tacticalCallsign);
String suffix = thirdParty ? ":}" : ":";
int suffixIndex = packet.indexOf(suffix);
String packetToRepeat;
if (!crossFreq) { if (!crossFreq) {
String packetToRepeat = packet.substring(0, packet.indexOf(",") + 1);
String tempPath = path;
int digiMode = Config.digi.mode; int digiMode = Config.digi.mode;
String tempPath = path;
if (path.indexOf("WIDE1-1") != -1 && (digiMode == 2 || digiMode == 3)) { if (tempPath.indexOf("WIDE1-1") != -1 && (digiMode == 2 || digiMode == 3)) { // WIDE1-1 Digipeater
if (tempPath.indexOf("*") != -1 ) return ""; // "*" shouldn't be in WIDE1-1 (only) type of packet
tempPath.replace("WIDE1-1", stationCallsign + "*"); tempPath.replace("WIDE1-1", stationCallsign + "*");
} else if (path.indexOf("WIDE2-") != -1 && digiMode == 3) { } else if (tempPath.indexOf("WIDE2-") != -1 && digiMode == 3) { // WIDE2-n Digipeater
int wide1AsteriskIndex = path.indexOf(",WIDE1*"); // less memory than: tempPath.replace(",WIDE1*", ""); tempPath = cleanPathAsterisks(path);
if (wide1AsteriskIndex != -1) {
tempPath.remove(wide1AsteriskIndex, 7);
}
int asteriskIndex = path.indexOf("*"); // less memory than: tempPath.replace("*", "");
if (asteriskIndex != -1) {
tempPath.remove(asteriskIndex, 1);
}
if (path.indexOf("WIDE2-1") != -1) { if (path.indexOf("WIDE2-1") != -1) {
tempPath.replace("WIDE2-1", stationCallsign + "*"); tempPath.replace("WIDE2-1", stationCallsign + "*");
} else if (path.indexOf("WIDE2-2") != -1) { } else if (path.indexOf("WIDE2-2") != -1) {
@@ -69,28 +74,18 @@ namespace DIGI_Utils {
return ""; return "";
} }
} }
packetToRepeat = packet.substring(0, packet.indexOf(",") + 1);
packetToRepeat += tempPath; packetToRepeat += tempPath;
packetToRepeat += APRS_IS_Utils::checkForStartingBytes(packet.substring(packet.indexOf(thirdParty ? ":}" : ":")));
return packetToRepeat;
} else { // CrossFreq Digipeater } else { // CrossFreq Digipeater
String suffix = thirdParty ? ":}" : ":"; packetToRepeat = cleanPathAsterisks(packet.substring(0, suffixIndex));
int suffixIndex = packet.indexOf(suffix); if (packetToRepeat.indexOf(stationCallsign) != -1) return ""; // stationCallsign shouldn't be in path
String packetToRepeat = packet.substring(0, suffixIndex);
String terms[] = {",WIDE1*", ",WIDE2*", "*"};
for (String term : terms) {
int index = packetToRepeat.indexOf(term);
if (index != -1) {
packetToRepeat.remove(index, term.length());
}
}
packetToRepeat += ","; packetToRepeat += ",";
packetToRepeat += stationCallsign; packetToRepeat += stationCallsign;
packetToRepeat += "*"; packetToRepeat += "*";
}
packetToRepeat += APRS_IS_Utils::checkForStartingBytes(packet.substring(suffixIndex)); packetToRepeat += APRS_IS_Utils::checkForStartingBytes(packet.substring(suffixIndex));
return packetToRepeat; return packetToRepeat;
} }
}
String generateDigipeatedPacket(const String& packet, bool thirdParty){ String generateDigipeatedPacket(const String& packet, bool thirdParty){
String temp; String temp;
@@ -104,7 +99,7 @@ namespace DIGI_Utils {
int digiMode = Config.digi.mode; int digiMode = Config.digi.mode;
bool crossFreq = abs(Config.loramodule.txFreq - Config.loramodule.rxFreq) >= 125000; // CrossFreq Digi bool crossFreq = abs(Config.loramodule.txFreq - Config.loramodule.rxFreq) >= 125000; // CrossFreq Digi
if (commaIndex > 2) { // Packet has "path" if (commaIndex > 2) { // "path" found
const String& path = temp.substring(commaIndex + 1); const String& path = temp.substring(commaIndex + 1);
if (digiMode == 2 || backupDigiMode) { if (digiMode == 2 || backupDigiMode) {
bool hasWide = path.indexOf("WIDE1-1") != -1; bool hasWide = path.indexOf("WIDE1-1") != -1;
@@ -167,7 +162,8 @@ namespace DIGI_Utils {
queryMessage = APRS_IS_Utils::processReceivedLoRaMessage(Sender, AddresseeAndMessage, thirdPartyPacket); queryMessage = APRS_IS_Utils::processReceivedLoRaMessage(Sender, AddresseeAndMessage, thirdPartyPacket);
} }
} }
if (!queryMessage) { if (queryMessage) return; // answer should not be repeated.
String loraPacket = generateDigipeatedPacket(packet.substring(3), thirdPartyPacket); String loraPacket = generateDigipeatedPacket(packet.substring(3), thirdPartyPacket);
if (loraPacket != "") { if (loraPacket != "") {
STATION_Utils::addToOutputPacketBuffer(loraPacket); STATION_Utils::addToOutputPacketBuffer(loraPacket);
@@ -176,6 +172,5 @@ namespace DIGI_Utils {
} }
} }
} }
}
} }
+14 -35
View File
@@ -49,40 +49,23 @@ extern bool stationCallsignIsValid;
namespace POWER_Utils { namespace POWER_Utils {
#ifdef VEXT_CTRL #ifdef ADC_CTRL_PIN
void vext_ctrl_ON() {
#if VEXT_CTRL_INVERTED == 1
digitalWrite(VEXT_CTRL, Config.digi.ecoMode == 1 ? HIGH : LOW);
#else
digitalWrite(VEXT_CTRL, Config.digi.ecoMode == 1 ? LOW : HIGH);
#endif
}
void vext_ctrl_OFF() {
#if VEXT_CTRL_INVERTED == 1
digitalWrite(VEXT_CTRL, Config.digi.ecoMode == 1 ? LOW : HIGH);
#else
digitalWrite(VEXT_CTRL, Config.digi.ecoMode == 1 ? HIGH : LOW);
#endif
}
#endif
#ifdef ADC_CTRL
void adc_ctrl_ON() { void adc_ctrl_ON() {
#if ADC_CTRL_INVERTED == 1 digitalWrite(ADC_CTRL_PIN, ADC_CTRL_ON_STATE);
digitalWrite(ADC_CTRL, LOW);
#else
digitalWrite(ADC_CTRL, HIGH);
#endif
} }
void adc_ctrl_OFF() { void adc_ctrl_OFF() {
#if ADC_CTRL_INVERTED == 1 digitalWrite(ADC_CTRL_PIN, !ADC_CTRL_ON_STATE);
digitalWrite(ADC_CTRL, HIGH); }
#else
digitalWrite(ADC_CTRL, LOW);
#endif #endif
#ifdef VEXT_CTRL_PIN
void vext_ctrl_ON() {
digitalWrite(VEXT_CTRL_PIN, Config.digi.ecoMode == 1 ? !VEXT_CTRL_ON_STATE : VEXT_CTRL_ON_STATE);
}
void vext_ctrl_OFF() {
digitalWrite(VEXT_CTRL_PIN, Config.digi.ecoMode == 1 ? VEXT_CTRL_ON_STATE : !VEXT_CTRL_ON_STATE);
} }
#endif #endif
@@ -313,12 +296,8 @@ namespace POWER_Utils {
Wire.begin(OLED_SDA, OLED_SCL); Wire.begin(OLED_SDA, OLED_SCL);
#endif #endif
#ifdef USE_WIRE_WITH_BOARD_I2C_PINS #ifdef SENSOR_I2C_BUS
Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL); SENSOR_I2C_BUS.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
#endif
#ifdef USE_WIRE1_WITH_BOARD_I2C_PINS
Wire1.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
#endif #endif
delay(1000); delay(1000);
+3 -3
View File
@@ -61,9 +61,9 @@ namespace WX_Utils {
void getWxModuleAddres() { void getWxModuleAddres() {
uint8_t err, addr; uint8_t err, addr;
for(addr = 1; addr < 0x7F; addr++) { for(addr = 1; addr < 0x7F; addr++) {
#if defined(HELTEC_V3) || defined(HELTEC_V3_2) || defined(HELTEC_WSL_V3) || defined(HELTEC_WSL_V3_DISPLAY) #ifdef SENSOR_I2C_BUS
Wire1.beginTransmission(addr); SENSOR_I2C_BUS.beginTransmission(addr);
err = Wire1.endTransmission(); err = SENSOR_I2C_BUS.endTransmission();
#else #else
Wire.beginTransmission(addr); Wire.beginTransmission(addr);
#ifdef LIGHTGATEWAY_PLUS_1_0 #ifdef LIGHTGATEWAY_PLUS_1_0
@@ -31,7 +31,7 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_38 #define GPIO_WAKEUP_PIN GPIO_SEL_38
// I2C // I2C
#define USE_WIRE_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire
#define BOARD_I2C_SDA 11 #define BOARD_I2C_SDA 11
#define BOARD_I2C_SCL 12 #define BOARD_I2C_SCL 12
@@ -39,8 +39,8 @@
#define INTERNAL_LED_PIN 48 #define INTERNAL_LED_PIN 48
// I2C // I2C
#define USE_WIRE_WITH_OLED_PINS #define SENSOR_I2C_BUS Wire
#define OLED_SDA 5 #define BOARD_I2C_SDA 5
#define OLED_SCL 6 #define BOARD_I2C_SCL 6
#endif #endif
+3 -2
View File
@@ -48,7 +48,8 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 25 #define INTERNAL_LED_PIN 25
#define BATTERY_PIN 37 #define BATTERY_PIN 37
#define ADC_CTRL 21
#define ADC_CTRL_INVERTED 1 #define ADC_CTRL_PIN 21
#define ADC_CTRL_ON_STATE LOW
#endif #endif
+2 -1
View File
@@ -48,7 +48,8 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 25 #define INTERNAL_LED_PIN 25
#define BATTERY_PIN 37 #define BATTERY_PIN 37
#define ADC_CTRL 21 #define ADC_CTRL 21
#define ADC_CTRL_INVERTED 1 #define ADC_CTRL_ON_STATE LOW
#endif #endif
@@ -33,7 +33,7 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_14 #define GPIO_WAKEUP_PIN GPIO_SEL_14
// I2C // I2C
#define USE_WIRE1_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire1
#define BOARD_I2C_SDA 39 #define BOARD_I2C_SDA 39
#define BOARD_I2C_SCL 38 #define BOARD_I2C_SCL 38
@@ -50,9 +50,10 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 45 #define INTERNAL_LED_PIN 45
#define BATTERY_PIN 7 #define BATTERY_PIN 7
#define ADC_CTRL 46
#define ADC_CTRL_INVERTED 0 #define ADC_CTRL_PIN 46
#define VEXT_CTRL 18 #define ADC_CTRL_ON_STATE HIGH
#define VEXT_CTRL_INVERTED 0 #define VEXT_CTRL_PIN 18
#define VEXT_CTRL_ON_STATE HIGH
#endif #endif
@@ -34,7 +34,7 @@
// I2C // I2C
#define USE_WIRE_WITH_OLED_PINS #define USE_WIRE_WITH_OLED_PINS
#define USE_WIRE1_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire1
#define BOARD_I2C_SDA 41 #define BOARD_I2C_SDA 41
#define BOARD_I2C_SCL 42 #define BOARD_I2C_SCL 42
@@ -53,9 +53,10 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 35 #define INTERNAL_LED_PIN 35
#define BATTERY_PIN 1 #define BATTERY_PIN 1
#define VEXT_CTRL 36
#define VEXT_CTRL_INVERTED 0 #define ADC_CTRL_PIN 37
#define ADC_CTRL 37 #define ADC_CTRL_ON_STATE LOW
#define ADC_CTRL_INVERTED 1 #define VEXT_CTRL_PIN 36
#define VEXT_CTRL_ON_STATE HIGH
#endif #endif
@@ -34,7 +34,7 @@
// I2C // I2C
#define USE_WIRE_WITH_OLED_PINS #define USE_WIRE_WITH_OLED_PINS
#define USE_WIRE1_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire1
#define BOARD_I2C_SDA 41 #define BOARD_I2C_SDA 41
#define BOARD_I2C_SCL 42 #define BOARD_I2C_SCL 42
@@ -53,9 +53,10 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 35 #define INTERNAL_LED_PIN 35
#define BATTERY_PIN 1 #define BATTERY_PIN 1
#define VEXT_CTRL 36
#define VEXT_CTRL_INVERTED 1 #define ADC_CTRL_PIN 37
#define ADC_CTRL 37 #define ADC_CTRL_ON_STATE HIGH
#define ADC_CTRL_INVERTED 0 #define VEXT_CTRL_PIN 36
#define VEXT_CTRL_ON_STATE LOW
#endif #endif
@@ -34,7 +34,7 @@
// I2C // I2C
#define USE_WIRE_WITH_OLED_PINS #define USE_WIRE_WITH_OLED_PINS
#define USE_WIRE1_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire1
#define BOARD_I2C_SDA 41 #define BOARD_I2C_SDA 41
#define BOARD_I2C_SCL 42 #define BOARD_I2C_SCL 42
@@ -53,10 +53,11 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 35 #define INTERNAL_LED_PIN 35
#define BATTERY_PIN 1 #define BATTERY_PIN 1
#define VEXT_CTRL 36
#define VEXT_CTRL_INVERTED 1 #define ADC_CTRL_PIN 37
#define ADC_CTRL 37 #define ADC_CTRL_ON_STATE HIGH
#define ADC_CTRL_INVERTED 0 #define VEXT_CTRL_PIN 36
#define VEXT_CTRL_ON_STATE LOW
// GPS ?? // GPS ??
#define VGNS_CTRL 34 // cambiar nombre para prender GPS ? #define VGNS_CTRL 34 // cambiar nombre para prender GPS ?
@@ -33,7 +33,7 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_14 #define GPIO_WAKEUP_PIN GPIO_SEL_14
// I2C // I2C
#define USE_WIRE1_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire1
#define BOARD_I2C_SDA 37 #define BOARD_I2C_SDA 37
#define BOARD_I2C_SCL 36 #define BOARD_I2C_SCL 36
@@ -50,9 +50,10 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 18 #define INTERNAL_LED_PIN 18
#define BATTERY_PIN 20 #define BATTERY_PIN 20
#define ADC_CTRL 19
#define ADC_CTRL_INVERTED 1 #define ADC_CTRL_PIN 19
#define VEXT_CTRL 45 #define ADC_CTRL_ON_STATE LOW
#define VEXT_CTRL_INVERTED 1 #define VEXT_CTRL_PIN 45
#define VEXT_CTRL_ON_STATE LOW
#endif #endif
@@ -33,7 +33,7 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_14 #define GPIO_WAKEUP_PIN GPIO_SEL_14
// I2C // I2C
#define USE_WIRE1_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire1
#define BOARD_I2C_SDA 37 #define BOARD_I2C_SDA 37
#define BOARD_I2C_SCL 36 #define BOARD_I2C_SCL 36
@@ -50,9 +50,10 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 18 #define INTERNAL_LED_PIN 18
#define BATTERY_PIN 20 #define BATTERY_PIN 20
#define ADC_CTRL 19
#define ADC_CTRL_INVERTED 1 #define ADC_CTRL_PIN 19
#define VEXT_CTRL 45 #define ADC_CTRL_ON_STATE LOW
#define VEXT_CTRL_INVERTED 1 #define VEXT_CTRL_PIN 45
#define VEXT_CTRL_ON_STATE LOW
#endif #endif
@@ -50,9 +50,11 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 35 #define INTERNAL_LED_PIN 35
#define BATTERY_PIN 1 #define BATTERY_PIN 1
#define ADC_CTRL 37
#define VEXT_CTRL 36 #define ADC_CTRL_PIN 37
#define VEXT_CTRL_INVERTED 1 #define ADC_CTRL_ON_STATE LOW
#define VEXT_CTRL_PIN 36
#define VEXT_CTRL_ON_STATE LOW
#define BOARD_I2C_SDA 41 #define BOARD_I2C_SDA 41
#define BOARD_I2C_SCL 42 #define BOARD_I2C_SCL 42
@@ -33,16 +33,17 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_14 #define GPIO_WAKEUP_PIN GPIO_SEL_14
// I2C // I2C
#define USE_WIRE1_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire1
#define BOARD_I2C_SDA 41 #define BOARD_I2C_SDA 41
#define BOARD_I2C_SCL 42 #define BOARD_I2C_SCL 42
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 35 #define INTERNAL_LED_PIN 35
#define BATTERY_PIN 1 #define BATTERY_PIN 1
#define ADC_CTRL 37
#define ADC_CTRL_INVERTED 1 #define ADC_CTRL_PIN 37
#define VEXT_CTRL 36 #define ADC_CTRL_ON_STATE LOW
#define VEXT_CTRL_INVERTED 1 #define VEXT_CTRL_PIN 36
#define VEXT_CTRL_ON_STATE LOW
#endif #endif
@@ -33,7 +33,7 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_14 #define GPIO_WAKEUP_PIN GPIO_SEL_14
// I2C // I2C
#define USE_WIRE1_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire1
#define BOARD_I2C_SDA 41 #define BOARD_I2C_SDA 41
#define BOARD_I2C_SCL 42 #define BOARD_I2C_SCL 42
@@ -44,9 +44,10 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 35 #define INTERNAL_LED_PIN 35
#define BATTERY_PIN 1 #define BATTERY_PIN 1
#define ADC_CTRL 37
#define ADC_CTRL_INVERTED 1 #define ADC_CTRL_PIN 37
#define VEXT_CTRL 36 #define ADC_CTRL_ON_STATE LOW
#define VEXT_CTRL_INVERTED 1 #define VEXT_CTRL_PIN 36
#define VEXT_CTRL_ON_STATE LOW
#endif #endif
@@ -33,7 +33,7 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_14 #define GPIO_WAKEUP_PIN GPIO_SEL_14
// I2C // I2C
#define USE_WIRE_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire
#define BOARD_I2C_SDA 7 #define BOARD_I2C_SDA 7
#define BOARD_I2C_SCL 6 #define BOARD_I2C_SCL 6
@@ -44,10 +44,11 @@
// Aditional Config // Aditional Config
#define INTERNAL_LED_PIN 18 #define INTERNAL_LED_PIN 18
#define BATTERY_PIN 1 #define BATTERY_PIN 1
#define VEXT_CTRL 3 // To turn on GPS and TFT
#define VEXT_CTRL_INVERTED 0 #define ADC_CTRL_PIN 2 // HELTEC Wireless Tracker ADC_CTRL = HIGH powers the voltage divider to read BatteryPin. Only on V05 = V1.1
#define ADC_CTRL 2 // HELTEC Wireless Tracker ADC_CTRL = HIGH powers the voltage divider to read BatteryPin. Only on V05 = V1.1 #define ADC_CTRL_ON_STATE HIGH
#define ADC_CTRL_INVERTED 0 #define VEXT_CTRL_PIN 3 // To turn on GPS and TFT
#define VEXT_CTRL_ON_STATE HIGH
// GPS // GPS
#define HAS_GPS #define HAS_GPS
+1 -1
View File
@@ -33,7 +33,7 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_45 #define GPIO_WAKEUP_PIN GPIO_SEL_45
// I2C // I2C
#define USE_WIRE_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire
#define BOARD_I2C_SDA 18 #define BOARD_I2C_SDA 18
#define BOARD_I2C_SCL 8 #define BOARD_I2C_SCL 8
+1 -1
View File
@@ -33,7 +33,7 @@
#define GPIO_WAKEUP_PIN GPIO_SEL_45 #define GPIO_WAKEUP_PIN GPIO_SEL_45
// I2C // I2C
#define USE_WIRE_WITH_BOARD_I2C_PINS #define SENSOR_I2C_BUS Wire
#define BOARD_I2C_SDA 18 #define BOARD_I2C_SDA 18
#define BOARD_I2C_SCL 8 #define BOARD_I2C_SCL 8