From d092553113c0a35a9984ddfa15e4f79a84c61928 Mon Sep 17 00:00:00 2001 From: oe3cjb Date: Sat, 1 Dec 2018 12:27:58 +0100 Subject: [PATCH] header file with all user configurations added, unnecessary files deleted --- ...TGO_Test.ino => TTGO_T-Beam_LoRa_APRS.ino} | 185 +++++++----------- src/TTGO_T-Beam_LoRa_APRS_config.h | 40 ++++ src/xtest_bw.h | 71 ------- 3 files changed, 114 insertions(+), 182 deletions(-) rename src/{TTGO_Test.ino => TTGO_T-Beam_LoRa_APRS.ino} (78%) create mode 100644 src/TTGO_T-Beam_LoRa_APRS_config.h delete mode 100644 src/xtest_bw.h diff --git a/src/TTGO_Test.ino b/src/TTGO_T-Beam_LoRa_APRS.ino similarity index 78% rename from src/TTGO_Test.ino rename to src/TTGO_T-Beam_LoRa_APRS.ino index c942537..8ebf039 100644 --- a/src/TTGO_Test.ino +++ b/src/TTGO_T-Beam_LoRa_APRS.ino @@ -11,52 +11,34 @@ // // licensed under CC BY-NC-SA // -// last update: 25.11.2018 +// last update: 01.12.2018 // modifications: select mode during compilation to select model -// USER DATA - USE THESE LINES TO MODIFY YOUR PREFERENCES -// Your Callsign -String Tcall="OE3OOO-7"; //your Call Sign for normal position reports -String wxTcall="OE3OOO-7"; //your Call Sign for weather reports -// Your symbol table and symbol for position reports incl. battery voltage -String sTable="/"; //Primer -//String sTable="\"; //Alternativ - -// String sSymbol="_"; //symbol code Weather Station -// String sSymbol=">"; //symbol code CAR -String sSymbol="["; //symbol code RUNNER -// String sSymbol="b"; //symbol code BICYCLE -// String sSymbol="<"; //symbol code MOTORCYCLE - -// SEND_WX - if true the tracker sends WX reports - needs DHT22 connected at Pin 10 -// when FIXED_POSITION is false then it sends alternating normal position packets and weather report packets -#define SEND_WX false - -// Your symbol table and symbol for weather reports -String wxTable="/"; //Primer -String wxSymbol="_"; //Symbol Code Weather Station -// String wxSymbol="W"; //Symbol Code Weather Station/ - -#define FIXED_POSITION false -// set to true if you want to use fixed position (position defined below) instead, or to false if you want to use GPS data -// also stops sending normal position reports when sending weather reports is active (SEND_WX true) - -#define LATITUDE "4813.62N" // please in APRS notation DDMM.mmN or DDMM.mmS used for FIXED_POSITION -#define LONGITUDE "01539.85E" // please in APRS notation DDDMM.mmE or DDDMM.mmW used for FIXED_POSITION -// ^^^^^LATITUDE and LONGITUDE only used when FIXED_POSITION is true - -// Tracker setting: use these lines to modify the tracker behaviour -#define TXFREQ 433.775 // Transmit frequency in MHz -#define TXdbmW 18 // Transmit power in dBm -#define TXenablePA 0 // switch internal power amplifier on (1) or off (0) - -// Transmit intervall -unsigned long nextTX = 60000L; // Send every 60 secs -// unsigned long nextTX = 5000L; // Send every 5 secs - FOR TESTS ONLY - NO CONNECTION TO SERVER PLEASE!!!! - -// STOP EDITING from here on - except you know what you do :-) #define DEBUG false // used for debugging purposes , e.g. turning on special serial or display logging +// Includes + +#include +#include +#include +#include +#include +// #include + +#include +// #include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include //Hardware definitions @@ -68,8 +50,8 @@ unsigned long nextTX = 60000L; // Send every 60 secs //Variables for DHT22 temperature and humidity sensor int chk; -float hum; //Stores humidity value -float temp; //Stores temperature value +float hum=0; //Stores humidity value +float temp=99.99; //Stores temperature value //other global Variables String Textzeile1, Textzeile2; @@ -100,7 +82,7 @@ const byte lora_PNSS = 18; //pin number where the NSS line for the LoRa device // #define ModemConfig BG_RF95::Bw125Cr45Sf4096 -#define DHTPIN 10 // what pin we're connected to +#define DHTPIN 34 // pin the DHT22 is connected to #define DHTTYPE DHT22 // DHT 22 (AM2302) // Variables and Constants @@ -108,7 +90,6 @@ const byte lora_PNSS = 18; //pin number where the NSS line for the LoRa device String InputString = ""; //data on buff is copied to this string String Outputstring = ""; String outString=""; //The new Output String with GPS Conversion RAW -float BattVolts; #if (FIXED_POSITION) boolean wx = true; @@ -131,42 +112,24 @@ byte lora_TXPacketL; //length of packet to send, includes source, destin unsigned long lastTX = 0L; -// Includes -#include -#include -#include -#include -// #include +float BattVolts; -#include -// #include -#include -#include -#include -#include - -#include -#include - -#include "xtest_bw.h" - -#include -#include -#include -#include +static adc1_channel_t adc_channel = ADC1_GPIO35_CHANNEL; +static const adc_atten_t atten = ADC_ATTEN_DB_6; +static const adc_unit_t unit = ADC_UNIT_1; static void smartDelay(unsigned long); void recalcGPS(void); void sendpacket(void); void loraSend(byte, byte, byte, byte, byte, long, byte, float); void batt_read(void); -void writedisplaytext(String, String, String, int); +void writedisplaytext(String, String, String, String, String, int); -#if (SEND_WX) +// #if (SEND_WX) DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor for normal 16mhz Arduino -#endif +// #endif // SoftwareSerial ss(RXPin, TXPin); // The serial connection to the GPS device HardwareSerial ss(1); // TTGO has HW serial @@ -188,25 +151,27 @@ void setup() { pinMode(TXLED, OUTPUT); + //pinMode(ADC1_CHANNEL_7_GPIO_NUM, INPUT); + //adcAttachPin(ADC1_CHANNEL_7_GPIO_NUM); digitalWrite(TXLED, LOW); Serial.begin(115200); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 for(;;); // Don't proceed, loop forever } digitalWrite(TXLED, HIGH); - writedisplaytext("Init:","Display OK!","",1000); + writedisplaytext("","Init:","Display OK!","","",1000); digitalWrite(TXLED, LOW); Serial.println("Init: Display OK!"); if (!rf95.init()) { // Serial.println("init failed"); - writedisplaytext("Init:","RF95 FAILED!",":-(",1000); + writedisplaytext("","Init:","RF95 FAILED!",":-(","",1000); Serial.println("Init: RF95 FAILED!"); for(;;); // Don't proceed, loop forever } digitalWrite(TXLED, HIGH); - writedisplaytext("Init:","RF95 OK!","",1000); + writedisplaytext("","Init:","RF95 OK!","","",1000); digitalWrite(TXLED, LOW); Serial.println("Init: RF95 OK!"); @@ -214,13 +179,17 @@ void setup() ss.begin(GPSBaud, SERIAL_8N1, 12, 15); //Startup HW serial for GPS #endif // #if !(FIXED_POSITION) digitalWrite(TXLED, HIGH); - writedisplaytext("Init:","GPS Serial OK!","",1000); + writedisplaytext("","Init:","GPS Serial OK!","","",1000); digitalWrite(TXLED, LOW); Serial.println("Init: GPS Serial OK!"); + // adc_power_on(); + // adc_gpio_init(ADC_UNIT_1,ADC_CHANNEL_7); + //adc_set_clk_div(1); adc1_config_width(ADC_WIDTH_BIT_12); adc1_config_channel_atten(ADC1_CHANNEL_7,ADC_ATTEN_DB_6); - writedisplaytext("Init:","ADC OK!","",1000); + // adc1_config_channel_atten(adc_channel, atten); + writedisplaytext("","Init:","ADC OK!",String(analogRead(35)*7.221/4096,4),"",1000); Serial.println("Init: ADC OK!"); rf95.setFrequency(433.775); @@ -232,18 +201,18 @@ void setup() #if (SEND_WX) dht.begin(); // DHT22 initialisieren - writedisplaytext("Init:","DHT OK!","",1000); + writedisplaytext("","Init:","DHT OK!","","",1000); Serial.println("Init: DHT OK!"); #else //#if (SEND_WX) - writedisplaytext("Init:","no DHT configuration","",1000); + writedisplaytext("","Init:","no DHT configuration","","",1000); Serial.println("Init: no DHT configuration"); #endif //#if (SEND_WX) digitalWrite(TXLED, HIGH); -writedisplaytext("Init:","All DONE OK!",":-D",1000); +writedisplaytext("","Init:","All DONE OK!",":-D","",1000); digitalWrite(TXLED, LOW); Serial.println("Init: ALL DONE OK! :-D"); -writedisplaytext("","","",0); +writedisplaytext("","","","","",0); } @@ -252,7 +221,7 @@ writedisplaytext("","","",0); void loop() { #if DEBUG - writedisplaytext("DEBUG","millis()",String(millis()),0); + writedisplaytext("","DEBUG",millis(),String(millis()),"",0); #endif //while(1) { if ( ss.available() ) Serial.write(ss.read());} #if !(FIXED_POSITION) @@ -276,25 +245,7 @@ if (rf95.waitAvailableTimeout(100)) } } -display.clearDisplay(); -display.setTextColor(WHITE); -display.setTextSize(2); -display.setCursor(0,0); -display.println("LoRa-APRS"); -display.setTextSize(1); -display.setCursor(0,36); -display.print("LAT: "); -display.println(String(gps.location.lat(),5)); -display.setCursor(0,46); -display.print("LON: "); -display.println(String(gps.location.lng(),5)); -display.setCursor(0,56); -display.print("SPD: "); -display.print(String(gps.speed.kmph(),1)); -display.print(" CRS: "); -display.println(String(gps.course.deg(),0)); -display.display(); - +writedisplaytext(" "+String(((lastTX+nextTX)-millis())/1000),"LAT: "+String(gps.location.lat(),5),"LON: "+String(gps.location.lng(),5),"SPD: "+String(gps.speed.kmph(),1)+" CRS: "+String(gps.course.deg(),0),"BAT: "+String(analogRead(35)*7.221/4096,2)+" TEMP: "+(dht.readTemperature() * 9/5) +32,250); smartDelay(1000); // digitalWrite(GPSLED, LOW); @@ -306,16 +257,20 @@ smartDelay(1000); #endif { digitalWrite(TXLED, HIGH); + batt_read(); + writedisplaytext(" ((TX))","LAT: "+String(gps.location.lat(),5),"LON: "+String(gps.location.lng(),5),"SPD: "+String(gps.speed.kmph(),1)+" CRS: "+String(gps.course.deg(),0),"BAR: "+String(analogRead(35)*7.221/4096,2)+" TEMP: "+(dht.readTemperature() * 9/5) +32,250); sendpacket(); - writedisplaytext("State:","Packet sent!","",250); + //writedisplaytext("","State:","Packet sent!","","",250); Serial.println("State: Packet sent!"); digitalWrite(TXLED, LOW); } else { if ( (lastTX+nextTX*2) <= millis() ) { digitalWrite(TXLED, HIGH); + batt_read(); + writedisplaytext(" ((TX))","LAT: "+String(gps.location.lat(),5),"LON: "+String(gps.location.lng(),5),"SPD: "+String(gps.speed.kmph(),1)+" CRS: "+String(gps.course.deg(),0),"BAT: "+String(analogRead(35)*7.221/4096,2)+" TEMP: "+(dht.readTemperature() * 9/5) +32,250); sendpacket(); - writedisplaytext("State:","Packet sent!","",250); + // writedisplaytext("","State:","Packet sent!","","",250); Serial.println("State: Packet sent!"); digitalWrite(TXLED, LOW); } @@ -326,7 +281,7 @@ smartDelay(1000); #if !(FIXED_POSITION) if (millis() > 200000 && gps.charsProcessed() < 10) { - writedisplaytext("Warning","No GPS Signal!","",1000); + writedisplaytext("","Warning","No GPS Signal!","","",1000); Serial.println("Warning: No GPS Signal!"); } #endif @@ -567,12 +522,16 @@ void loraSend(byte lora_LTXStart, byte lora_LTXEnd, byte lora_LTXPacketType, byt /////////////////////////////////////////////////////////////////////////////////////// void batt_read() { - //int BattRead = analogRead(ANALOG_PI); - int BattRead = adc1_get_raw(ADC1_CHANNEL_7); + float BattRead = analogRead(35)*7.221; + // Serial.println("Batt: "+String(BattRead)); + //int BattRead = adc1_get_raw(ADC1_CHANNEL_7); + // delay(250); //lora_TXBUFF[1] = (BattRead / 256); //MSB of battery volts //lora_TXBUFF[0] = (BattRead - (lora_TXBUFF[1] * 256)); //LSB of battery volts - BattVolts = (BattRead * (2.2 / 4096.0)); + BattVolts = (BattRead / 4096); + // BattVolts = BattRead; + // writedisplaytext(String(BattVolts,2), "", "", "", "", 0); //Serial.print("lora_TXBUFF[0] "); //Serial.println(lora_TXBUFF[0]); @@ -584,20 +543,24 @@ void batt_read() } /////////////////////////////////////////////////////////////////////////////////////// -void writedisplaytext(String Line1, String Line2, String Line3, int warten) +void writedisplaytext(String Line1, String Line2, String Line3, String Line4, String Line5, int warten) { display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0,0); - display.println("LoRa-APRS"); + display.println(" LoRa-APRS"); display.setTextSize(1); - display.setCursor(0,36); + display.setCursor(0,16); display.println(Line1); - display.setCursor(0,46); + display.setCursor(0,26); display.println(Line2); - display.setCursor(0,56); + display.setCursor(0,36); display.println(Line3); + display.setCursor(0,46); + display.println(Line4); + display.setCursor(0,56); + display.println(Line5); display.display(); smartDelay(warten); } diff --git a/src/TTGO_T-Beam_LoRa_APRS_config.h b/src/TTGO_T-Beam_LoRa_APRS_config.h new file mode 100644 index 0000000..e28ac57 --- /dev/null +++ b/src/TTGO_T-Beam_LoRa_APRS_config.h @@ -0,0 +1,40 @@ +// USER DATA - USE THESE LINES TO MODIFY YOUR PREFERENCES +// Your Callsign +String Tcall="OE3CJB-7"; //your Call Sign for normal position reports +String wxTcall="OE3CJB-7"; //your Call Sign for weather reports + +// Your symbol table and symbol for position reports incl. battery voltage +String sTable="/"; //Primer +//String sTable="\"; //Alternativ + +// String sSymbol="_"; //symbol code Weather Station +String sSymbol=">"; //symbol code CAR +// String sSymbol="["; //symbol code RUNNER +// String sSymbol="b"; //symbol code BICYCLE +// String sSymbol="<"; //symbol code MOTORCYCLE + +// SEND_WX - if true the tracker sends WX reports - needs DHT22 connected at Pin 10 +// when FIXED_POSITION is false then it sends alternating normal position packets and weather report packets +#define SEND_WX false + +// Your symbol table and symbol for weather reports +String wxTable="/"; //Primer +String wxSymbol="_"; //Symbol Code Weather Station +// String wxSymbol="W"; //Symbol Code Weather Station/ + +#define FIXED_POSITION false +// set to true if you want to use fixed position (position defined below) instead, or to false if you want to use GPS data +// also stops sending normal position reports when sending weather reports is active (SEND_WX true) + +#define LATITUDE "4813.62N" // please in APRS notation DDMM.mmN or DDMM.mmS used for FIXED_POSITION +#define LONGITUDE "01539.85E" // please in APRS notation DDDMM.mmE or DDDMM.mmW used for FIXED_POSITION +// ^^^^^LATITUDE and LONGITUDE only used when FIXED_POSITION is true + +// Tracker setting: use these lines to modify the tracker behaviour +#define TXFREQ 433.775 // Transmit frequency in MHz +#define TXdbmW 18 // Transmit power in dBm +#define TXenablePA 0 // switch internal power amplifier on (1) or off (0) + +// Transmit intervall +unsigned long nextTX = 60000L; // Send every 60 secs +// unsigned long nextTX = 5000L; // Send every 5 secs - FOR TESTS ONLY - NO CONNECTION TO SERVER PLEASE!!!! diff --git a/src/xtest_bw.h b/src/xtest_bw.h deleted file mode 100644 index a230bb3..0000000 --- a/src/xtest_bw.h +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// File generated by LCD Assistant -// http://en.radzio.dxp.pl/bitmap_converter/ -//------------------------------------------------------------------------------ - -const unsigned char xtest_bw [] PROGMEM = { -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0x81, 0xFF, 0xFE, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1C, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x01, 0x81, 0xED, 0xB6, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x1F, 0x00, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x07, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x3E, 0x00, 0x0F, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x7C, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0xF8, 0x00, 0x3E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0xF9, 0xF0, 0x00, 0x3E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xE0, 0x00, 0x7C, 0x00, 0x20, 0x78, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xF8, 0x00, 0xE0, 0xCC, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x81, 0x86, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, 0x81, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x07, 0x00, 0x07, 0xC0, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x06, 0x00, 0x07, 0xC0, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0x80, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x86, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x8C, 0x04, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x1C, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0x80, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x02, 0x00, 0x07, 0xC0, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x06, 0x00, 0x03, 0xE0, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xF8, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xF0, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0xF9, 0xF0, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0xF8, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x3E, 0x00, 0x07, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1C, 0x00, 0x0F, 0x80, 0x1F, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x01, 0x81, 0xFF, 0xFE, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x00, 0x81, 0xEA, 0xAA, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -};