diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index f6854a6..fe0157b 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -1031,6 +1031,7 @@ int getKeyPressEvent() { return p; /* map KP_x to EVT_KEY1_x / EVT_KEY2_x*/ } +extern int initlevels[40]; void setup() { char buf[12]; @@ -1041,6 +1042,11 @@ void setup() Serial.printf("%d:%d ", i, v); } Serial.println(""); + + for (int i = 0; i < 39; i++) { + Serial.printf("%d:%d ", i, initlevels[i]); + } + Serial.println(" (before setup)"); pinMode(LORA_LED, OUTPUT); aprs_gencrctab(); @@ -1255,7 +1261,7 @@ void loopDecoder() { } - if ((res&0xff) == 0 && connected) { + if ((res & 0xff) == 0 && connected) { //Send a packet with position information // first check if ID and position lat+lonis ok SondeInfo *s = &sonde.sondeList[rxtask.receiveSonde]; diff --git a/RX_FSK/data/config.txt b/RX_FSK/data/config.txt index a1c864c..bbd1e4a 100644 --- a/RX_FSK/data/config.txt +++ b/RX_FSK/data/config.txt @@ -2,8 +2,11 @@ # Hardware depending settings #-------------------------------# # pin: 255=disabled; x=button x+128=touch button -button_pin=130 -button2_pin=142 +#button_pin=130 +#button2_pin=142 +# No specification in config file: try autodetection (gpio4 pin level at startup) +#button_pin=0 +#button2_pin=255 # LED port led_pout=9 # OLED Setup is depending on hardware of LoRa board @@ -13,6 +16,8 @@ led_pout=9 #oled_sda=21 #oled_scl=22 oled_rst=16 +#gps_rxd=-1 +gps_txd=-1 #-------------------------------# # General config settings #-------------------------------# diff --git a/libraries/SondeLib/Sonde.cpp b/libraries/SondeLib/Sonde.cpp index e8ebf97..42a1c55 100644 --- a/libraries/SondeLib/Sonde.cpp +++ b/libraries/SondeLib/Sonde.cpp @@ -34,18 +34,24 @@ int getKeyPressEvent(); /* in RX_FSK.ino */ * value of receiveResult (or timeout, if receiveResult was not set within 1s). It * should also return immediately if there is some keyboard input. */ +int initlevels[40]; Sonde::Sonde() { + for (int i = 0; i < 39; i++) { + initlevels[i] = gpio_get_level((gpio_num_t)i); + } + for (int i = 0; i < 39*3; i++) { + initlevels[i%39] += gpio_get_level((gpio_num_t)(i%39)); + } sondeList = (SondeInfo *)malloc((MAXSONDE+1)*sizeof(SondeInfo)); memset(sondeList, 0, (MAXSONDE+1)*sizeof(SondeInfo)); config.touch_thresh = 70; config.led_pout = 9; // Try autodetecting board type // Seems like on startup, GPIO4 is 1 on v1 boards, 0 on v2.1 boards? - int autodetect = gpio_get_level((gpio_num_t)16); config.gps_rxd = -1; config.gps_txd = -1; - if(autodetect==0) { + if(initlevels[16]==0) { config.oled_sda = 4; config.oled_scl = 15; config.button_pin = 0; @@ -53,8 +59,7 @@ Sonde::Sonde() { } else { config.oled_sda = 21; config.oled_scl = 22; - autodetect = gpio_get_level((gpio_num_t)17); - if(autodetect==0) { // T-Beam + if(initlevels[17]==0) { // T-Beam config.button_pin = 39; config.button2_pin = T4 + 128; // T4 == GPIO13 config.gps_rxd = 12; diff --git a/libraries/SondeLib/autodetect-infos b/libraries/SondeLib/autodetect-infos index 567c41d..f3067ef 100644 --- a/libraries/SondeLib/autodetect-infos +++ b/libraries/SondeLib/autodetect-infos @@ -4,16 +4,18 @@ Heltec board TTGO LORA32 v2.1_1.6 (button1: touch gpio 2 => 130; button2: touch gpio14 => 142) (sda,scl: 21,22) -0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15*1 16*1 17*1 18:0 19:0 20:0 21:1 22*1 23*1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:1 16:1 17:1 18:0 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:4 1:4 2:0 3:4 4:0 5:4 6:0 7:4 8:0 9:4 10:4 11:4 12:0 13:0 14:4 15:4 16:4 17:4 18:0 19:0 20:0 21:4 22:4 23:4 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (in Sonde()) TTGO LORA v1.0 (sda,scl: 4,15) (button1: 0) (button2: touch gpio13 = 141) -0:1 1:0 2:0 3:1 4*1 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15*1 16*0 17*0 18:0 19:0 20:0 21:0 22*0 23*0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:1 1:0 2:0 3:1 4:1 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:1 16:0 17:0 18:0 19:0 20:0 21:0 22:0 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:4 1:4 2:0 3:4 4:4 5:4 6:0 7:4 8:0 9:4 10:4 11:4 12:0 13:0 14:4 15:4 16:0 17:0 18:0 19:0 20:0 21:0 22:0 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (in Sonde()) TTGO T-Beam (sda,scl: 21,22) (button1: 39) (button2: touch gpio13 = 141) (gps rx: 12) -0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:1 16:1 17:0 18:0 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 - +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:1 13:0 14:1 15:1 16:1 17:0 18:0 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:4 1:4 2:0 3:4 4:0 5:4 6:0 7:4 8:0 9:4 10:4 11:4 12:4 13:0 14:4 15:4 16:4 17:0 18:0 19:0 20:0 21:4 22:4 23:4 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (before setup) Current autodetect strategy: