header file with all user configurations added, unnecessary files deleted

pull/2/head
oe3cjb 2018-12-01 12:27:58 +01:00
parent 3b55b711c6
commit d092553113
3 changed files with 114 additions and 182 deletions

View File

@ -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 <TTGO_T-Beam_LoRa_APRS.h>
#include <Arduino.h>
#include <Adafruit_Sensor.h>
#include <SPI.h>
#include <BG_RF95.h>
// #include <string>
#include <TinyGPS++.h>
// #include <SoftwareSerial.h>
#include <math.h>
#include <DHT.h>
#include <driver/adc.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <splash.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
//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 <Arduino.h>
#include <Adafruit_Sensor.h>
#include <SPI.h>
#include <BG_RF95.h>
// #include <string>
float BattVolts;
#include <TinyGPS++.h>
// #include <SoftwareSerial.h>
#include <math.h>
#include <DHT.h>
#include <driver/adc.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <splash.h>
#include "xtest_bw.h"
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
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);
}

View File

@ -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!!!!

View File

@ -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
};