使用TEF-GTK用户界面控制的TEF6686(V102) Arduino Radio最简单的pcb
目录
概述
TEF6686是一款收音机芯片,使用I2C控制,只使用两根杜邦线(除了电源和地),即可完成Arduino Nano控制6686芯片,通过串口通信,用户可通过TEF-GTK用户界面对6686收音机芯片进行控制
TEF6686 V102 相关图示
芯片图示

PCB图 (正面)

PCB图 (反面)

arduino nano与6686引脚连接图

相关函数(GitHub开源,随便移植的)
/*
by Eustake (marsel90)
With this sketch it is recommended to use together with TEF-GTK v1.1.2
changes:
Sketch compatible with NXP-TEF6686 (F8602 or F8605)
Add = MPX out mode ( DAC_Left : FM MPX (DARC) signal / DAC_Right : mono audio ) + MPX obtion in TEF-GTK
Check signal level and 19kHz subcarrier every TIMER_INTERVAL. Now in TEF-GTK appear MO for mono and ST for stereo.
Without IF+ and RF+ - RF Gain is 0db
Only RF+ - RF Gain max +6db
Only IF+ - RF Gain max +9db
Both IF+ & RF+ - RF Gain max +15db
ChannelEqualizer obtion - on/off use TEF-GTK button EQ
MphSuppression iMS obtion - on/off use TEF-GTK button iMS
+6dB analog radio sound gain - in TEF-GTK enable Show antenna input alignment - NO AM
#
by VoXiTPro
changes:
all warnings are removed (unsigned int to signed int did go wrong)
Filters are now switchable (AUTO is max 236khz, manual you can set 311Khz)
Stereo on/off
Signal measurement improvements
Keep filter (to do) and frequency settings when switching from AM to FM / FM to AM
Settings are now from Eustake (marsel90)
AGC is now switchable (now for FM/AM and reversed the settings)
Removed some settings from Eustake, FMSI stereo improvement only for tef6687 and tef6689, Softmute_mod AM only, Wavegen and I2S audio (only using internal audio)
You can now change settings with the antenne switch ANT A = default settings, ANT B = Improved settings, ANT C = Eustake Settings
Settings are now A,B,C from eustake. D are improved settings from prog manual.
AGC, Deemphasis, IF+ RF+ are now in subroutines so you can set them at other moments. If you change settings the old values will be reapplied.
IF+ RF+ works now also for AM.
Squelch will change volume scale for AM. if you have the right value change the define AM_VOL_SCALE too that value (now -1)
*/
/*
If you have changed the above value squelch will be off again.
Switching from AM to FM or from FM to AM filter settings are kept
Thanks also to:
- FMDXklaas for testing
- ODJeetje
- Eustake for default and improved settings
and many others ...
Tested on Arduino Nano V3.0 at 5V
*/
#include <Wire.h>
#define SERIAL_PORT_SPEED 115200
#define SERIAL_BUFFER_SIZE 16
char buff[SERIAL_BUFFER_SIZE];
uint8_t buff_pos = 0;
uint32_t REG_FREQ;
uint32_t MODA_FREQ = 0;
uint32_t MODF_FREQ = 0;
uint32_t timer = 0; // Signal level reporting timer
uint32_t timer_RDS = 0; // RDS reporting timer
int8_t current_filter = -1; // Current FIR filter (-1 is adaptive)
int8_t current_set = -1; // Current FIR filter (-1 is adaptive)
int8_t forced_mono;
int16_t LevelOffset;
int16_t Level;
int16_t AudioLevel;
int16_t LevelA;
int8_t mode;
int8_t AGC_tress;
int8_t IFplus;
int8_t RFplus;
int8_t Squelch;
int8_t Setsquelch;
int16_t nDeemphasis, volume;
uint32_t freq;
int8_t Filter_AM = 16;
int8_t Filter_FM = 16;
int8_t radio_mode;
int8_t scan_mode;
/* Scan */
uint16_t scan_start = 0;
uint16_t scan_end = 0;
uint16_t scan_step = 0;
uint8_t scan_filter = 0;
uint16_t AM_start_scan = 0;
uint16_t AM_scan_end = 0;
uint16_t AM_scan_step = 0;
uint8_t AM_scan_filter = 0;
#define TIMER_INTERVAL 66
#define RDS_TIMER_INTERVAL 87
#define AM_VOL_SCALE -1
byte DSP_I2C = (0x64U);
static const uint8_t DSP_INIT[] PROGMEM =
{
0x03, 0x1C, 0x00, 0x00,
0x03, 0x1C, 0x00, 0x74,
0x19, 0x1B, 0xF0, 0x00, 0x38, 0x3B, 0xD0, 0x80, 0xF0, 0x00, 0x38, 0x43, 0xD0, 0x80, 0x43, 0xB2, 0x38, 0x46, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xC2, 0xF7,
0x19, 0x1B, 0xF0, 0x00, 0x38, 0x77, 0xD0, 0x80, 0xF0, 0x00, 0x38, 0x7B, 0xDF, 0x80, 0x80, 0xFC, 0x39, 0x0E, 0xD0, 0x80, 0xC2, 0x38, 0x20, 0x11, 0x40, 0xB7,
0x19, 0x1B, 0x9F, 0xA7, 0x39, 0x13, 0xD2, 0x80, 0x9F, 0xA7, 0x39, 0x1D, 0xD2, 0x80, 0xF0, 0x00, 0x39, 0x24, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x27, 0xD0, 0x80,
0x19, 0x1B, 0x90, 0x41, 0x39, 0x49, 0xDD, 0x80, 0xF0, 0x00, 0x3A, 0x25, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x4D, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x27, 0xD0, 0x80,
0x19, 0x1B, 0xC4, 0xA2, 0x02, 0x18, 0x60, 0x04, 0xF0, 0x00, 0x39, 0xBF, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0xE7, 0xD0, 0x80, 0x90, 0x01, 0x39, 0x4F, 0xD0, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x38, 0xF0, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x56, 0xD2, 0x80, 0xF0, 0x00, 0x39, 0x5A, 0xD0, 0x80, 0x43, 0x84, 0x39, 0x64, 0xD0, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x39, 0x67, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x6B, 0xD0, 0x80, 0x78, 0x4D, 0x39, 0x71, 0xD0, 0x80, 0x9E, 0x30, 0x18, 0xF9, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x39, 0x76, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x79, 0xD0, 0x80, 0x30, 0x77, 0x39, 0xDE, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x7C, 0xD0, 0x80,
0x19, 0x1B, 0x32, 0x00, 0x39, 0x7E, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0x80, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0xC7, 0xD0, 0x80, 0xF0, 0x00, 0x39, 0xF5, 0xD0, 0x80,
0x19, 0x1B, 0xA8, 0x01, 0x3A, 0x13, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x32, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x39, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x3B, 0xD0, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x3A, 0x4F, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x52, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x55, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x3A, 0x58, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x3A, 0x5D, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0x1E, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x3A, 0x6B, 0xD0, 0x80, 0x00, 0x43, 0x3A, 0x7A, 0xD9, 0x80, 0xF0, 0x00, 0x3A, 0x84, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0xDA, 0xD0, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x3A, 0xDD, 0xD0, 0x80, 0xF0, 0x00, 0x3A, 0xEE, 0xD0, 0x80, 0x2E, 0x40, 0x3B, 0x8C, 0xD0, 0x80, 0xF0, 0x00, 0x3B, 0x96, 0xD0, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x0E, 0x3F, 0x60, 0x00, 0x50, 0x10, 0x28, 0xD8, 0xD2, 0x80, 0x91, 0x01, 0x01, 0x36, 0x60, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0x18,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0xCC, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0xED, 0xF0, 0x00, 0x70, 0x00, 0xA1, 0xAE, 0xF0, 0x00, 0x70, 0x00, 0xA2, 0x02,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xA2, 0x2D, 0xF0, 0x00, 0x70, 0x00, 0xA2, 0x45, 0xF0, 0x00, 0x20, 0x31, 0xD0, 0x80, 0xF0, 0x00, 0x04, 0xC1, 0x60, 0x08,
0x19, 0x1B, 0xF0, 0x00, 0x01, 0x01, 0xD2, 0x80, 0xF0, 0x00, 0x00, 0x30, 0xD0, 0x80, 0x00, 0x7F, 0x60, 0x02, 0xE2, 0x00, 0xF0, 0x00, 0x0E, 0x22, 0x60, 0x0A,
0x19, 0x1B, 0xF0, 0x00, 0x00, 0xFF, 0x60, 0x03, 0xF0, 0x00, 0x01, 0x42, 0xD2, 0x80, 0x90, 0x03, 0x40, 0x02, 0xF0, 0x00, 0x90, 0x43, 0x01, 0x70, 0xD1, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x01, 0x69, 0xD0, 0x80, 0x0E, 0x69, 0x60, 0x0A, 0xA3, 0x4C, 0x20, 0x23, 0x00, 0x01, 0x60, 0x01, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xC4, 0xCB, 0x70, 0x00, 0xF0, 0x00, 0xCA, 0x09, 0x30, 0x23, 0xF0, 0x00, 0xC2, 0xCB, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x23, 0xD0, 0x08,
0x19, 0x1B, 0x82, 0x00, 0x0D, 0x50, 0x60, 0x08, 0xF0, 0x00, 0x0D, 0x51, 0x60, 0x09, 0x30, 0x00, 0x21, 0x80, 0x60, 0x01, 0xF0, 0x00, 0x40, 0x32, 0xF0, 0x00,
0x19, 0x1B, 0x30, 0x11, 0x45, 0xF3, 0xF0, 0x00, 0x30, 0x92, 0x2D, 0x30, 0x60, 0x04, 0x31, 0x13, 0x2D, 0x40, 0x60, 0x05, 0x31, 0x94, 0x7F, 0xFF, 0x60, 0x06,
0x19, 0x1B, 0x32, 0x15, 0x0D, 0x61, 0x60, 0x0A, 0x32, 0x96, 0x0D, 0x6B, 0x60, 0x0B, 0x33, 0x10, 0x0D, 0x50, 0x60, 0x01, 0x33, 0x90, 0x0D, 0x5C, 0x60, 0x02,
0x19, 0x1B, 0x30, 0x21, 0x0D, 0x63, 0x60, 0x03, 0x30, 0x31, 0x0D, 0x75, 0x60, 0x0C, 0x30, 0xA2, 0x8D, 0x00, 0x60, 0x01, 0x30, 0xB3, 0x01, 0x73, 0x60, 0x02,
0x19, 0x1B, 0x30, 0x41, 0x00, 0x25, 0x60, 0x03, 0x30, 0xC2, 0x40, 0x44, 0xF0, 0x00, 0x31, 0x43, 0x40, 0x35, 0xF0, 0x00, 0x31, 0xC4, 0x64, 0x00, 0x60, 0x06,
0x19, 0x1B, 0x32, 0x45, 0x1F, 0x40, 0x60, 0x07, 0x32, 0xC6, 0x70, 0x00, 0xF0, 0x00, 0x33, 0x47, 0x1E, 0xBC, 0x60, 0x0D, 0x33, 0xC0, 0x01, 0x22, 0x60, 0x01,
0x19, 0x1B, 0x34, 0x40, 0xFD, 0xEE, 0x60, 0x02, 0x30, 0x51, 0x7B, 0x8F, 0x60, 0x03, 0x30, 0xD2, 0xC4, 0x29, 0x60, 0x04, 0x31, 0x51, 0x1E, 0xC2, 0x60, 0x0E,
0x19, 0x1B, 0x32, 0x53, 0xFF, 0x0D, 0x60, 0x02, 0x32, 0xD4, 0x7D, 0x2E, 0x60, 0x03, 0x30, 0x61, 0xC1, 0x9A, 0x60, 0x04, 0x30, 0xE2, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x31, 0x61, 0x70, 0x00, 0xF0, 0x00, 0x32, 0x63, 0x05, 0x2C, 0x60, 0x08, 0x32, 0xE4, 0x40, 0x00, 0x83, 0x22, 0xF0, 0x00, 0x03, 0x70, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0x08, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0x4D, 0xF0, 0x00, 0x02, 0x15, 0xD0, 0x80, 0x40, 0x15, 0x20, 0x53, 0xA3, 0x1E,
0x19, 0x1B, 0xA0, 0xE8, 0x58, 0x06, 0xA3, 0x1D, 0xA0, 0x72, 0x20, 0x64, 0xF0, 0x00, 0xA8, 0x61, 0x70, 0x00, 0xF0, 0x00, 0xA1, 0x28, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xA0, 0xB2, 0x02, 0xBB, 0xD0, 0x80, 0xF0, 0x00, 0x0D, 0x51, 0x60, 0x0F, 0xF0, 0x00, 0x05, 0x17, 0x60, 0x0E, 0x23, 0xF6, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x21, 0x63, 0x41, 0xF5, 0x91, 0x8F, 0x21, 0xF8, 0x40, 0x74, 0xC3, 0xEF, 0x21, 0xE0, 0xF0, 0x00, 0xC3, 0xA4, 0x33, 0xF7, 0xF0, 0x00,
0x19, 0x1B, 0xD8, 0x5B, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x18, 0x70, 0x00, 0xF0, 0x00, 0x9F, 0xAF, 0x18, 0x00, 0xF0, 0x00, 0x9F, 0x0F, 0x31, 0xF8, 0x90, 0x02,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x28, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x22, 0x78, 0xF0, 0x00, 0x16, 0xD3, 0x60, 0x09, 0xA0, 0x6D,
0x19, 0x1B, 0x35, 0xF0, 0x1E, 0xBC, 0x60, 0x0D, 0xF0, 0x00, 0x0D, 0x61, 0x60, 0x08, 0xF0, 0x00, 0x03, 0xA5, 0xD2, 0x80, 0xF0, 0x00, 0x1E, 0xC2, 0x60, 0x0D,
0x19, 0x1B, 0xF0, 0x00, 0x0D, 0x6B, 0x60, 0x08, 0xF0, 0x00, 0x03, 0xA5, 0xD2, 0x80, 0xF0, 0x00, 0x21, 0x00, 0xF0, 0x00, 0x83, 0x6D, 0x22, 0xF1, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x23, 0x77, 0xF0, 0x00, 0x90, 0x41, 0x36, 0x70, 0xF0, 0x00, 0x9E, 0x79, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x32, 0xF1, 0xD0, 0x08,
0x19, 0x1B, 0x91, 0xC7, 0x33, 0x75, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x70, 0xE6, 0x00, 0xF0, 0x00, 0x34, 0xF0, 0xE6, 0x00, 0xF0, 0x00, 0x24, 0x74, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x24, 0xF3, 0xF0, 0x00, 0x8C, 0x24, 0x26, 0xF2, 0x40, 0x16, 0x8A, 0x1B, 0x34, 0x74, 0x4F, 0xF5, 0x82, 0xB7, 0x34, 0xF3, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x20, 0x71, 0x90, 0x05, 0x83, 0x04, 0x70, 0x00, 0xF0, 0x00, 0x8E, 0x67, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x02,
0x19, 0x1B, 0xF0, 0x00, 0x36, 0xF6, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0xF0, 0x80, 0x06, 0x82, 0xAF, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x1B, 0x70, 0x00, 0xD0, 0x09,
0x19, 0x1B, 0x8E, 0x5F, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x09, 0xF0, 0x00, 0x36, 0xF5, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x70, 0xF0, 0x00,
0x19, 0x1B, 0x40, 0x11, 0x27, 0x72, 0xA2, 0xE9, 0x90, 0x8A, 0x20, 0xF3, 0xA2, 0xE8, 0x8E, 0xD7, 0x37, 0x72, 0xF0, 0x00, 0xF0, 0x00, 0x37, 0xF1, 0xE6, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x22, 0x7A, 0xF0, 0x00, 0x16, 0xC3, 0x60, 0x09, 0xA0, 0x46, 0xF0, 0x00, 0x18, 0x20, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x35, 0x70, 0xF0, 0x00, 0xF0, 0x00, 0x32, 0x7A, 0xD0, 0x08, 0x0D, 0x51, 0x60, 0x08, 0xA2, 0xDF, 0x82, 0x00, 0x21, 0x06, 0x40, 0x03,
0x19, 0x1B, 0x33, 0x80, 0x0D, 0x63, 0x60, 0x09, 0x37, 0x00, 0x0D, 0x6D, 0x60, 0x0A, 0x37, 0x80, 0x0D, 0x30, 0x60, 0x0B, 0x36, 0x83, 0x0D, 0x40, 0x60, 0x0C,
0x19, 0x1B, 0x35, 0x80, 0x70, 0x00, 0xC8, 0x88, 0xF0, 0x00, 0x10, 0x10, 0xF0, 0x00, 0xF0, 0x00, 0x10, 0x20, 0xF0, 0x00, 0x32, 0x86, 0x40, 0x15, 0xC8, 0x90,
0x19, 0x1B, 0xF0, 0x00, 0x10, 0x30, 0xF0, 0x00, 0xF0, 0x00, 0x10, 0x40, 0xF0, 0x00, 0xF0, 0x00, 0x33, 0x05, 0xD0, 0x08, 0xF0, 0x00, 0x0D, 0x75, 0x60, 0x0F,
0x19, 0x1B, 0xF0, 0x00, 0x05, 0x63, 0x60, 0x0E, 0x24, 0xF7, 0x05, 0x1D, 0x60, 0x0D, 0x25, 0x76, 0x70, 0x00, 0xF0, 0x00, 0x91, 0xC7, 0x20, 0xE8, 0x40, 0x15,
0x19, 0x1B, 0x91, 0x8F, 0x21, 0xE9, 0xD4, 0x09, 0xC3, 0xEF, 0x20, 0x00, 0x40, 0x12, 0x9F, 0xBE, 0x20, 0x11, 0x58, 0x03, 0xA0, 0x80, 0x35, 0x77, 0x90, 0x01,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x21, 0xF5, 0xF0, 0x00, 0xA0, 0xCA, 0x22, 0x54, 0xF0, 0x00, 0xCC, 0x09, 0x05, 0x17, 0x60, 0x0C,
0x19, 0x1B, 0x83, 0x2C, 0x70, 0x00, 0xF0, 0x00, 0x8A, 0x61, 0x70, 0x00, 0xF0, 0x00, 0xAE, 0x48, 0x22, 0x45, 0xA2, 0xC3, 0xA2, 0x28, 0x20, 0x78, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x35, 0xF0, 0xF0, 0x00, 0xF0, 0x00, 0x18, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x78, 0xF0, 0x00, 0x16, 0xE3, 0x60, 0x09, 0xA0, 0x27,
0x19, 0x1B, 0x89, 0x01, 0x23, 0xF4, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0xF2, 0xF0, 0x00, 0x82, 0x61, 0x21, 0x73, 0xF0, 0x00, 0xA0, 0x50, 0x36, 0x70, 0xF0, 0x00,
0x19, 0x1B, 0xA0, 0x58, 0x23, 0x72, 0xE1, 0x40, 0xA8, 0x01, 0x22, 0xF3, 0xF0, 0x00, 0x90, 0x49, 0x22, 0x75, 0xE0, 0x40, 0x80, 0x61, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x8A, 0x51, 0x33, 0xF1, 0xF0, 0x00, 0xA0, 0x58, 0x70, 0x00, 0xF0, 0x00, 0xAF, 0x48, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x70, 0xD0, 0x08,
0x19, 0x1B, 0x82, 0x00, 0x0D, 0x75, 0x60, 0x08, 0x90, 0x09, 0x0D, 0x00, 0x60, 0x09, 0xF0, 0x00, 0x35, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x33, 0x80, 0xC0, 0x28,
0x19, 0x1B, 0xF0, 0x00, 0x10, 0x10, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x81, 0xD0, 0x08, 0x82, 0x49, 0x0D, 0x75, 0x60, 0x08, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xFD,
0x19, 0x1B, 0x04, 0x00, 0x60, 0x00, 0xA2, 0xA9, 0x8E, 0xC0, 0x40, 0x00, 0x60, 0x05, 0x60, 0x00, 0x60, 0x05, 0xE6, 0x00, 0xC8, 0x1B, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xD8, 0xDB, 0x0D, 0x51, 0x60, 0x08, 0x83, 0x5B, 0x70, 0x00, 0xF0, 0x00, 0x9E, 0xBA, 0x30, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x84, 0xD4, 0x09,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xC1, 0xF0, 0x00, 0x0D, 0x75, 0x60, 0x08, 0xF0, 0x00, 0x0D, 0x51, 0x60, 0x09, 0xF0, 0x00, 0x24, 0x03, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x27, 0x94, 0xD0, 0x08, 0xA0, 0x03, 0x70, 0x00, 0xF0, 0x00, 0x00, 0x11, 0x08, 0x00, 0xF0, 0x00, 0x00, 0x11, 0x08, 0x00, 0xC0, 0x0E,
0x19, 0x1B, 0xA0, 0x09, 0x00, 0x11, 0x08, 0x00, 0xA0, 0x09, 0x70, 0x00, 0xF0, 0x00, 0xA4, 0x08, 0x70, 0x00, 0xD0, 0x08, 0xA0, 0x03, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x00, 0x11, 0x08, 0x00, 0xF0, 0x00, 0x00, 0x11, 0x08, 0x00, 0xC0, 0x26, 0xA0, 0x09, 0x00, 0x11, 0x08, 0x00, 0xA0, 0x09, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xA4, 0x08, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x1D, 0x01, 0x60, 0x08, 0xF0, 0x00, 0x0A, 0x2C, 0x60, 0x00, 0xF0, 0x00, 0x01, 0x1A, 0x60, 0x01,
0x19, 0x1B, 0x31, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x31, 0x81, 0x70, 0x00, 0xD0, 0x08, 0xA8, 0x01, 0x7F, 0xFF, 0x60, 0x06, 0xCC, 0x0A, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x8E, 0xA1, 0x31, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0x32, 0x06, 0xD4, 0x09, 0xAE, 0xE8, 0x04, 0xDF, 0xD0, 0x80, 0x90, 0x87, 0x70, 0x00, 0x98, 0x07,
0x19, 0x1B, 0xF0, 0x00, 0x0F, 0xB1, 0xD2, 0x80, 0x9E, 0x08, 0x41, 0x89, 0x60, 0x06, 0x14, 0x92, 0x60, 0x00, 0x90, 0x04, 0xA1, 0x98, 0x1D, 0x01, 0x60, 0x08,
0x19, 0x1B, 0xAA, 0x56, 0x70, 0x00, 0xF0, 0x00, 0xA2, 0x20, 0x32, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0x32, 0x80, 0xF0, 0x00, 0x91, 0xC2, 0x06, 0x9A, 0x60, 0x08,
0x19, 0x1B, 0x41, 0xE6, 0x06, 0x00, 0xD0, 0x80, 0x82, 0x13, 0x70, 0x00, 0xD8, 0x09, 0xF0, 0x00, 0x0F, 0xB1, 0xD2, 0x80, 0x9E, 0x08, 0x10, 0x62, 0x60, 0x01,
0x19, 0x1B, 0x05, 0x1F, 0x60, 0x05, 0xD0, 0x09, 0xF0, 0x00, 0x06, 0xE6, 0x60, 0x08, 0xA3, 0x65, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x85, 0xD0, 0x08,
0x19, 0x1B, 0x10, 0x00, 0x60, 0x03, 0xA2, 0x75, 0x30, 0x23, 0x07, 0x73, 0xD2, 0x80, 0xF0, 0x00, 0x07, 0xC6, 0xD0, 0x80, 0x08, 0x00, 0x60, 0x03, 0xA0, 0x02,
0x19, 0x1B, 0x0E, 0x6F, 0x60, 0x09, 0xF0, 0x00, 0x02, 0x00, 0x60, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x07, 0x73, 0xD0, 0x80, 0x40, 0xE0, 0x00, 0x1F, 0x60, 0x01,
0x19, 0x1B, 0x13, 0xD5, 0x60, 0x07, 0xA0, 0x11, 0x90, 0x40, 0x70, 0x00, 0xF0, 0x00, 0x13, 0xFB, 0x60, 0x06, 0xA0, 0x0E, 0x14, 0x05, 0x60, 0x06, 0xA0, 0x0D,
0x19, 0x1B, 0x14, 0x0F, 0x60, 0x06, 0xA0, 0x0C, 0x45, 0x60, 0x00, 0x3A, 0x60, 0x01, 0x13, 0xB6, 0x60, 0x07, 0xA0, 0x0B, 0x90, 0x40, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x13, 0xF7, 0x60, 0x06, 0xA0, 0x08, 0x14, 0x01, 0x60, 0x06, 0xA0, 0x07, 0x14, 0x0B, 0x60, 0x06, 0xA0, 0x06, 0x41, 0x80, 0x00, 0x3B, 0x60, 0x01,
0x19, 0x1B, 0x13, 0xB6, 0x60, 0x07, 0xA0, 0x05, 0x90, 0x40, 0x70, 0x00, 0xF0, 0x00, 0x13, 0xF7, 0x60, 0x06, 0xA0, 0x02, 0x14, 0x01, 0x60, 0x06, 0xA0, 0x01,
0x19, 0x1B, 0x14, 0x0B, 0x60, 0x06, 0x80, 0x00, 0xF0, 0x00, 0x0D, 0x28, 0xD0, 0x80, 0xD7, 0xCA, 0x00, 0xFF, 0x60, 0x04, 0x81, 0xD7, 0x0C, 0xF7, 0x60, 0x09,
0x19, 0x1B, 0xD0, 0x56, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x76, 0x30, 0x17, 0xF0, 0x00, 0xD0, 0xF6, 0x40, 0x83, 0xF0, 0x00, 0xC1, 0xA4, 0x20, 0x19, 0xF0, 0x00,
0x19, 0x1B, 0x82, 0xF6, 0x70, 0x00, 0xF0, 0x00, 0xC1, 0x80, 0x20, 0x17, 0xA2, 0x54, 0xC3, 0xE7, 0x70, 0x00, 0xF0, 0x00, 0xC5, 0xC7, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x30, 0x17, 0xD0, 0x08, 0x9A, 0x78, 0x70, 0x00, 0xF0, 0x00, 0x9A, 0x70, 0x70, 0x00, 0x90, 0xE3, 0xF0, 0x00, 0x70, 0x00, 0x90, 0xE3,
0x19, 0x1B, 0xF0, 0x00, 0x0D, 0x67, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xA1, 0x19, 0xF0, 0x00, 0x70, 0x00, 0x80, 0xD2, 0x1E, 0xC8, 0x60, 0x08, 0xA2, 0x4A,
0x19, 0x1B, 0xF0, 0x00, 0x20, 0x00, 0xA2, 0x49, 0x90, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD4, 0x09, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xA5,
0x19, 0x1B, 0x1E, 0xC8, 0x60, 0x08, 0xA2, 0x45, 0xF0, 0x00, 0x30, 0x00, 0xD0, 0x08, 0x00, 0x28, 0x60, 0x00, 0xA2, 0x43, 0x9E, 0x38, 0x0E, 0xF4, 0x60, 0x09,
0x19, 0x1B, 0x9E, 0x38, 0x70, 0x00, 0x9F, 0xFF, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0x40, 0x40, 0x0C, 0x8A, 0xD5, 0x80, 0xF0, 0x00, 0x0C, 0x8B, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x0F, 0xB1, 0xD2, 0x80, 0x9C, 0x39, 0x70, 0x00, 0xF0, 0x00, 0x9C, 0x31, 0x70, 0x00, 0x90, 0x03, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x02,
0x19, 0x1B, 0x40, 0x10, 0x70, 0x00, 0xAF, 0xF3, 0x41, 0xF1, 0x40, 0x40, 0x80, 0x0D, 0x40, 0x00, 0x70, 0x00, 0xAF, 0xF1, 0x41, 0xF1, 0x40, 0x40, 0x80, 0x0C,
0x19, 0x1B, 0x03, 0xE8, 0x60, 0x02, 0xA2, 0x35, 0x90, 0x83, 0x10, 0x44, 0xD1, 0x80, 0xF0, 0x00, 0x10, 0x42, 0xD0, 0x80, 0x40, 0x71, 0x40, 0x20, 0xA0, 0x08,
0x19, 0x1B, 0x43, 0xA1, 0x40, 0x30, 0xA0, 0x07, 0x43, 0xB1, 0x40, 0x30, 0xA0, 0x06, 0xF0, 0x00, 0x10, 0x75, 0xD0, 0x80, 0x40, 0x71, 0x40, 0x20, 0xA0, 0x04,
0x19, 0x1B, 0x43, 0xA1, 0x40, 0x30, 0xA0, 0x02, 0x43, 0xB1, 0x40, 0x30, 0xA0, 0x01, 0xF0, 0x00, 0x10, 0x81, 0xD0, 0x80, 0xF0, 0x00, 0x0C, 0x92, 0xD0, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x0C, 0x94, 0xD0, 0x80, 0xA0, 0x10, 0x70, 0x00, 0x31, 0x7C, 0xA6, 0x50, 0x7C, 0x4D, 0x20, 0x83, 0x80, 0x09, 0x21, 0xF8, 0xF0, 0x00,
0x19, 0x1B, 0xA0, 0xD0, 0x70, 0x00, 0x18, 0x41, 0xA6, 0x53, 0x15, 0x36, 0xD0, 0x80, 0xF0, 0x00, 0x0B, 0xC9, 0x60, 0x08, 0xF0, 0x00, 0x1D, 0x8D, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x16, 0xD5, 0xD0, 0x80, 0xF0, 0x00, 0x0B, 0xC9, 0x60, 0x08, 0xF0, 0x00, 0x1D, 0x8F, 0xD2, 0x80, 0xF0, 0x00, 0x16, 0xDA, 0xD0, 0x80,
0x19, 0x1B, 0x3E, 0x91, 0x1F, 0x5F, 0xD2, 0x80, 0xF0, 0x00, 0x23, 0x8A, 0xD0, 0x80, 0x0D, 0x85, 0x60, 0x08, 0xA2, 0x1B, 0xF0, 0x00, 0x30, 0x00, 0xD0, 0x08,
0x19, 0x1B, 0xF0, 0x00, 0x0F, 0x88, 0x60, 0x0B, 0xF0, 0x00, 0x02, 0x30, 0x60, 0x03, 0xF0, 0x00, 0x09, 0x38, 0x60, 0x04, 0x9F, 0x98, 0x01, 0x2C, 0x60, 0x05,
0x19, 0x1B, 0xF0, 0x00, 0x2E, 0xB3, 0xEE, 0x00, 0xF0, 0x00, 0x0F, 0xB1, 0xD2, 0x80, 0x9E, 0x09, 0x0D, 0x87, 0x60, 0x0C, 0x9F, 0x90, 0x70, 0x00, 0x90, 0x02,
0x19, 0x1B, 0x9F, 0x88, 0x2F, 0x34, 0xEE, 0x00, 0xF0, 0x00, 0x2F, 0xB5, 0xEE, 0x00, 0x30, 0x43, 0x0B, 0x42, 0x60, 0x08, 0xF0, 0x00, 0x30, 0xC4, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x31, 0x45, 0xF0, 0x00, 0xF0, 0x00, 0x2C, 0xB1, 0x40, 0x17, 0xF0, 0x00, 0x2D, 0x32, 0xF0, 0x00, 0xC6, 0x79, 0x22, 0x05, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x3D, 0x81, 0xF0, 0x00, 0xF0, 0x00, 0x3D, 0x01, 0xF0, 0x00, 0xDD, 0x6D, 0x1B, 0x93, 0xD2, 0x80, 0x90, 0x46, 0x0D, 0x85, 0x60, 0x0A,
0x19, 0x1B, 0x20, 0x42, 0x1B, 0x93, 0xD2, 0x80, 0xDA, 0xC9, 0x20, 0x25, 0xA2, 0x04, 0x8C, 0x69, 0x2D, 0xB3, 0xF0, 0x00, 0xDD, 0x49, 0x32, 0x01, 0xF0, 0x00,
0x19, 0x1B, 0x8D, 0x89, 0x70, 0x00, 0xF0, 0x00, 0x3C, 0x81, 0xFE, 0x35, 0x60, 0x00, 0x35, 0x81, 0x00, 0x16, 0x60, 0x01, 0xA0, 0x18, 0x21, 0x46, 0xF0, 0x00,
0x19, 0x1B, 0xAA, 0x07, 0x01, 0x2D, 0x60, 0x00, 0x81, 0xCF, 0x70, 0x00, 0xF0, 0x00, 0x8F, 0x80, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x94, 0x02,
0x19, 0x1B, 0x40, 0x45, 0x57, 0x4B, 0x60, 0x00, 0xE0, 0x00, 0x60, 0x01, 0x80, 0x02, 0x40, 0x65, 0x40, 0x00, 0x60, 0x00, 0xC6, 0x66, 0x60, 0x01, 0x80, 0x00,
0x19, 0x1B, 0xA0, 0x30, 0x40, 0x00, 0x60, 0x04, 0xAF, 0x4E, 0x00, 0xA4, 0x60, 0x05, 0x81, 0x8E, 0x0B, 0x75, 0x60, 0x08, 0xF0, 0x00, 0x14, 0x74, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x1B, 0x90, 0xD2, 0x80, 0x2E, 0x34, 0x04, 0x00, 0x60, 0x06, 0x20, 0xC2, 0x1B, 0x93, 0xD2, 0x80, 0xD2, 0xC9, 0x03, 0xE9, 0x60, 0x05,
0x19, 0x1B, 0x81, 0x8E, 0x0B, 0x59, 0x60, 0x08, 0x8F, 0x2D, 0x31, 0xC6, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x94, 0x02, 0x40, 0x45, 0xB1, 0x5C, 0x60, 0x03,
0x19, 0x1B, 0x46, 0x66, 0x60, 0x07, 0x80, 0x02, 0x40, 0x65, 0xAA, 0xCE, 0x60, 0x03, 0xC6, 0x66, 0x60, 0x07, 0x80, 0x00, 0xA0, 0xE0, 0x00, 0x38, 0x60, 0x04,
0x19, 0x1B, 0xAF, 0x48, 0x00, 0x1D, 0x60, 0x05, 0x81, 0xC7, 0x31, 0x84, 0xF0, 0x00, 0x31, 0x05, 0x14, 0x74, 0xD2, 0x80, 0xF0, 0x00, 0x1B, 0x90, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0xD8, 0x00, 0x60, 0x00, 0xF0, 0x00, 0x0B, 0x67, 0x60, 0x08, 0x21, 0xC6, 0x20, 0x00, 0x60, 0x04, 0xF0, 0x00, 0x13, 0x33, 0x60, 0x05,
0x19, 0x1B, 0x81, 0x86, 0x31, 0x84, 0x40, 0x07, 0x31, 0x05, 0x14, 0x74, 0xD2, 0x80, 0xF0, 0x00, 0x1B, 0x90, 0xD0, 0x80, 0xF0, 0x00, 0x6E, 0x6C, 0x60, 0x03,
0x19, 0x1B, 0x40, 0x07, 0x00, 0xE5, 0x60, 0x05, 0xA0, 0x58, 0xFF, 0xFF, 0x60, 0x03, 0xAA, 0x24, 0x0B, 0x52, 0x60, 0x08, 0x81, 0x1C, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x31, 0x05, 0x7F, 0xDF, 0x60, 0x06, 0x31, 0x84, 0x14, 0x74, 0xD2, 0x80, 0xF0, 0x00, 0x1B, 0x90, 0xD0, 0x80, 0x91, 0x83, 0x2E, 0x85, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x2F, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0x2F, 0x87, 0xF0, 0x00, 0x0B, 0xC9, 0x60, 0x09, 0xA1, 0xCF, 0x3E, 0x11, 0x0D, 0x82, 0x60, 0x0A,
0x19, 0x1B, 0xF0, 0x00, 0x27, 0x11, 0xA1, 0xCD, 0xA0, 0x50, 0x27, 0x92, 0xF0, 0x00, 0xAA, 0x41, 0x0B, 0xB4, 0x60, 0x0C, 0x80, 0x52, 0x20, 0x21, 0xA1, 0xCA,
0x19, 0x1B, 0x9E, 0xCB, 0x35, 0x92, 0xF0, 0x00, 0x90, 0x41, 0x70, 0x00, 0xD8, 0x09, 0x88, 0x2D, 0x70, 0x00, 0xD4, 0x09, 0xF0, 0x00, 0x36, 0x15, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x36, 0x95, 0xF0, 0x00, 0x91, 0x00, 0x30, 0xA6, 0xF0, 0x00, 0x31, 0x27, 0x14, 0x62, 0xD2, 0x80, 0x90, 0x04, 0x31, 0xC0, 0xF0, 0x00,
0x19, 0x1B, 0x21, 0x45, 0x8C, 0xCD, 0x60, 0x06, 0xF0, 0x00, 0xFF, 0x55, 0x60, 0x07, 0xF0, 0x00, 0x14, 0x74, 0xD2, 0x80, 0xF0, 0x00, 0x32, 0x40, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x32, 0xC1, 0xF0, 0x00, 0xF0, 0x00, 0x33, 0x42, 0x80, 0x00, 0xF0, 0x00, 0x0D, 0x82, 0x60, 0x09, 0xF0, 0x00, 0x0B, 0xC9, 0x60, 0x0A,
0x19, 0x1B, 0xF0, 0x00, 0x20, 0x15, 0xA1, 0xB9, 0x91, 0x45, 0x7F, 0xEC, 0x60, 0x06, 0x40, 0x47, 0x70, 0x00, 0xD4, 0x09, 0x20, 0x90, 0x14, 0x47, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x34, 0xA0, 0xF0, 0x00, 0x21, 0x10, 0x14, 0x47, 0xD2, 0x80, 0xF0, 0x00, 0x35, 0x20, 0xD0, 0x08, 0x0A, 0x3D, 0x60, 0x07, 0xA1, 0xB2,
0x19, 0x1B, 0xA2, 0x79, 0x0B, 0xC9, 0x60, 0x09, 0xA2, 0xBA, 0x70, 0x00, 0xF0, 0x00, 0x90, 0xC0, 0x3B, 0x91, 0xF0, 0x00, 0x3B, 0x12, 0x14, 0x62, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x3C, 0x10, 0xD0, 0x08, 0xF0, 0x00, 0x0B, 0x60, 0x60, 0x0E, 0xF0, 0x00, 0x00, 0x04, 0x60, 0x03, 0x40, 0xA7, 0x3F, 0xFC, 0x60, 0x04,
0x19, 0x1B, 0x32, 0x63, 0x80, 0x08, 0x60, 0x05, 0x32, 0xE4, 0x19, 0x9A, 0x60, 0x06, 0x33, 0x65, 0x0D, 0x86, 0x60, 0x0F, 0x31, 0xE6, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x30, 0x77, 0x70, 0x00, 0xD0, 0x08, 0x0D, 0x82, 0x60, 0x0A, 0xA1, 0xA4, 0xF0, 0x00, 0x30, 0x20, 0xF0, 0x00, 0x00, 0xD2, 0x60, 0x01, 0x94, 0x0B,
0x19, 0x1B, 0xF0, 0x00, 0x00, 0xD2, 0x60, 0x02, 0x00, 0xFA, 0x60, 0x03, 0xAF, 0xED, 0xF0, 0x00, 0xBE, 0x77, 0x60, 0x06, 0xF0, 0x00, 0x4B, 0x00, 0x60, 0x07,
0x19, 0x1B, 0x37, 0x06, 0x00, 0x01, 0x60, 0x01, 0x37, 0x87, 0x03, 0xE8, 0x60, 0x02, 0xF0, 0x00, 0x03, 0x84, 0x60, 0x04, 0xF0, 0x00, 0x00, 0x01, 0x60, 0x05,
0x19, 0x1B, 0xF0, 0x00, 0x00, 0x8C, 0x60, 0x06, 0xF0, 0x00, 0x0A, 0xF0, 0x60, 0x07, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xC7, 0xF0, 0x00, 0x0B, 0xB4, 0x60, 0x09,
0x19, 0x1B, 0xF0, 0x00, 0x00, 0x11, 0x60, 0x05, 0xF0, 0x00, 0x00, 0x11, 0x60, 0x06, 0x3B, 0x05, 0x10, 0x00, 0x60, 0x07, 0x3B, 0x86, 0x00, 0x04, 0x60, 0x00,
0x19, 0x1B, 0x3C, 0x07, 0xAD, 0x84, 0x60, 0x01, 0x32, 0x10, 0x01, 0xFD, 0x60, 0x02, 0x32, 0x91, 0x0B, 0x5E, 0x60, 0x03, 0x33, 0x12, 0x0C, 0x80, 0x60, 0x04,
0x19, 0x1B, 0x31, 0x93, 0x00, 0xA0, 0x60, 0x05, 0x34, 0x84, 0xFF, 0xD0, 0x60, 0x06, 0x35, 0x05, 0xE3, 0x54, 0x60, 0x07, 0x36, 0x06, 0x34, 0x00, 0x60, 0x00,
0x19, 0x1B, 0x36, 0x86, 0x00, 0x01, 0x60, 0x01, 0x37, 0x07, 0x03, 0xE8, 0x60, 0x02, 0x37, 0x80, 0x70, 0x00, 0x8F, 0xB7, 0x80, 0xE5, 0x7F, 0xFF, 0x60, 0x00,
0x19, 0x1B, 0xCC, 0x0A, 0x70, 0x00, 0xF0, 0x00, 0x8E, 0xA9, 0x33, 0x70, 0xF0, 0x00, 0xAF, 0x20, 0x34, 0x70, 0xD4, 0x09, 0xAE, 0xE8, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xA8, 0x05, 0x00, 0x80, 0x60, 0x07, 0xA8, 0xF6, 0x33, 0x75, 0xF0, 0x00, 0xC3, 0x86, 0x70, 0x00, 0xF0, 0x00, 0x8F, 0x7F, 0x33, 0xF6, 0xF0, 0x00,
0x19, 0x1B, 0xA8, 0x85, 0x1D, 0xE4, 0xD1, 0x80, 0xF0, 0x00, 0x34, 0x75, 0xD0, 0x08, 0x0D, 0x86, 0x60, 0x09, 0xA1, 0x7B, 0x20, 0x12, 0x1F, 0x32, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x35, 0x82, 0xD0, 0x08, 0x90, 0x82, 0x0D, 0x86, 0x60, 0x09, 0x40, 0xA7, 0x40, 0x77, 0xE6, 0x40, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x30, 0x17, 0xD0, 0x08, 0x0B, 0xB4, 0x60, 0x08, 0xA1, 0x74, 0xF0, 0x00, 0x31, 0x82, 0xD0, 0x08, 0xF0, 0x00, 0x09, 0x61, 0x60, 0x08,
0x19, 0x1B, 0xF0, 0x00, 0x09, 0xC9, 0x60, 0x09, 0xF0, 0x00, 0x21, 0x80, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x91, 0xA1, 0x6F, 0xA2, 0x08, 0x70, 0x00, 0xD0, 0x08,
0x19, 0x1B, 0x00, 0xCF, 0x60, 0x02, 0xA0, 0x01, 0x01, 0x51, 0x60, 0x02, 0x80, 0x01, 0x0D, 0x8B, 0x60, 0x08, 0x80, 0x01, 0x0D, 0x8C, 0x60, 0x08, 0x80, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x02, 0xD0, 0x08, 0x0F, 0xF2, 0x60, 0x09, 0xA1, 0x67, 0x20, 0x11, 0x0D, 0x8B, 0x60, 0x0A,
0x19, 0x1B, 0xF0, 0x00, 0x2C, 0x92, 0xF0, 0x00, 0x90, 0x41, 0x20, 0x11, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x93, 0xFE, 0xF0, 0x00, 0x70, 0x00, 0xF2, 0x00,
0x19, 0x1B, 0x31, 0x22, 0x20, 0x31, 0xD0, 0x80, 0x0D, 0x8B, 0x60, 0x08, 0xA0, 0x03, 0xF0, 0x00, 0x20, 0x22, 0xD0, 0x80, 0x0D, 0x8C, 0x60, 0x08, 0xA0, 0x01,
0x19, 0x1B, 0xF0, 0x00, 0x20, 0x1E, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x0E, 0x69, 0x60, 0x08, 0xF0, 0x00, 0x01, 0xD0, 0x60, 0x01,
0x19, 0x1B, 0xF0, 0x00, 0x30, 0x80, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x01, 0xD0, 0x08, 0x83, 0x6D, 0x0C, 0x35, 0x60, 0x08, 0x40, 0x60, 0x3A, 0x4D, 0x60, 0x01,
0x19, 0x1B, 0x41, 0xE2, 0x21, 0x96, 0x60, 0x03, 0x33, 0x00, 0x41, 0x44, 0xF0, 0x00, 0x33, 0x81, 0x70, 0x00, 0xF0, 0x00, 0x34, 0x02, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x34, 0x83, 0x0C, 0x29, 0x60, 0x09, 0x35, 0x04, 0x3A, 0x5B, 0x60, 0x00, 0x35, 0x85, 0x3A, 0x60, 0x60, 0x03, 0x30, 0x90, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x33, 0x93, 0x70, 0x00, 0x8F, 0xDF, 0xF0, 0x00, 0x70, 0x00, 0xAE, 0x6C, 0xF0, 0x00, 0x70, 0x00, 0x8E, 0x9F, 0xF0, 0x00, 0x70, 0x00, 0xAE, 0x98,
0x19, 0x1B, 0xF0, 0x00, 0x0C, 0x51, 0xD2, 0x80, 0xF0, 0x00, 0x21, 0xA0, 0xD0, 0x80, 0xF0, 0x00, 0x05, 0x2E, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xA0, 0x0E,
0x19, 0x1B, 0xF0, 0x00, 0x21, 0xB7, 0xD0, 0x80, 0xF0, 0x00, 0x1F, 0x32, 0xD2, 0x80, 0xF0, 0x00, 0x1E, 0x84, 0xD2, 0x80, 0xF0, 0x00, 0x21, 0xE0, 0xD0, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x1E, 0xA4, 0xD2, 0x80, 0xF0, 0x00, 0x07, 0xF7, 0xD2, 0x80, 0xF0, 0x00, 0x22, 0x15, 0xD0, 0x80, 0xF0, 0x00, 0x07, 0xFB, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x22, 0x8F, 0xD0, 0x80, 0x40, 0x40, 0x22, 0xE1, 0xD2, 0x80, 0x40, 0x80, 0x22, 0xE2, 0xD2, 0x80, 0xF0, 0x00, 0x22, 0x9C, 0xD0, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x07, 0xFB, 0xD2, 0x80, 0xF0, 0x00, 0x22, 0xB6, 0xD0, 0x80, 0xF0, 0x00, 0x20, 0xF0, 0xD2, 0x80, 0x90, 0x02, 0x27, 0xDF, 0xD2, 0x80,
0x19, 0x1B, 0x9E, 0x69, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x07, 0x00, 0xD1, 0x80, 0xF0, 0x00, 0x23, 0x20, 0xD0, 0x80, 0x90, 0x82, 0x0C, 0x29, 0x60, 0x09,
0x19, 0x1B, 0x40, 0x17, 0x40, 0x67, 0xE6, 0x40, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x32, 0x17, 0xD0, 0x08, 0xF0, 0x00, 0x07, 0xF7, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x27, 0xEA, 0xD2, 0x80, 0xF0, 0x00, 0x11, 0xB5, 0xD0, 0x80, 0x40, 0x55, 0x15, 0x17, 0x60, 0x08, 0xF0, 0x00, 0x1D, 0x40, 0x60, 0x00,
0x19, 0x1B, 0x31, 0x05, 0x1E, 0x60, 0x60, 0x01, 0x31, 0x85, 0x70, 0x00, 0xF0, 0x00, 0x32, 0x05, 0x70, 0x00, 0xF0, 0x00, 0x32, 0x85, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x33, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x33, 0x81, 0x0D, 0x8E, 0x60, 0x09, 0x34, 0x00, 0x02, 0x54, 0x60, 0x02, 0x34, 0x81, 0x38, 0x80, 0x60, 0x03,
0x19, 0x1B, 0x30, 0x12, 0x70, 0x00, 0xF0, 0x00, 0x30, 0x93, 0x70, 0x00, 0xD0, 0x08, 0x17, 0x0B, 0x60, 0x0C, 0xA1, 0x1F, 0x00, 0x40, 0x40, 0x05, 0xF0, 0x00,
0x19, 0x1B, 0x00, 0x41, 0x24, 0x3F, 0xD0, 0x80, 0xF0, 0x00, 0x0C, 0x83, 0x60, 0x08, 0x90, 0x00, 0x0C, 0x6B, 0x60, 0x0B, 0xF0, 0x00, 0x70, 0x0C, 0xE6, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x20, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x22, 0x04, 0xF0, 0x00, 0xF0, 0x00, 0x3B, 0xB3, 0xF0, 0x00, 0xF0, 0x00, 0x3C, 0x34, 0xD0, 0x08,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xAD, 0xC8, 0xF0, 0x00, 0x0C, 0x8D, 0x60, 0x08, 0xF0, 0x00, 0x26, 0x0A, 0xD0, 0x80, 0x83, 0xFF, 0x0D, 0x9B, 0x60, 0x08,
0x19, 0x1B, 0xF0, 0x00, 0x01, 0xF4, 0x60, 0x00, 0xF0, 0x00, 0x03, 0xB1, 0x60, 0x01, 0x10, 0x00, 0x03, 0xB2, 0x60, 0x02, 0x10, 0x01, 0x04, 0x0E, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x02, 0x04, 0x0F, 0x60, 0x01, 0x10, 0x00, 0x04, 0x5C, 0x60, 0x02, 0x10, 0x01, 0x04, 0x5D, 0x60, 0x00, 0x10, 0x02, 0x13, 0x80, 0x60, 0x01,
0x19, 0x1B, 0x10, 0x00, 0x0D, 0xAB, 0x60, 0x09, 0x10, 0x01, 0x02, 0xEE, 0x60, 0x00, 0x10, 0x07, 0x43, 0x06, 0x60, 0x01, 0x10, 0x10, 0x04, 0x69, 0x60, 0x02,
0x19, 0x1B, 0x10, 0x11, 0x44, 0x87, 0x60, 0x00, 0x10, 0x12, 0x05, 0xE3, 0x60, 0x01, 0x10, 0x10, 0x46, 0x08, 0x60, 0x02, 0x10, 0x11, 0x06, 0xAE, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x12, 0x0D, 0xA4, 0x60, 0x08, 0x10, 0x10, 0x9E, 0x3C, 0x60, 0x00, 0x10, 0x17, 0x0D, 0xB3, 0x60, 0x09, 0x10, 0x00, 0x25, 0xDA, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x07, 0x80, 0x3D, 0x60, 0x01, 0x10, 0x10, 0x28, 0x82, 0x60, 0x02, 0x10, 0x11, 0xC0, 0x3D, 0x60, 0x00, 0x10, 0x12, 0x28, 0x87, 0x60, 0x01,
0x19, 0x1B, 0x10, 0x10, 0xC0, 0x3B, 0x60, 0x02, 0x10, 0x11, 0x28, 0x8C, 0x60, 0x00, 0x10, 0x12, 0xC0, 0x3B, 0x60, 0x01, 0x10, 0x10, 0x28, 0x91, 0x60, 0x02,
0x19, 0x1B, 0x10, 0x11, 0xC0, 0x3B, 0x60, 0x00, 0x10, 0x12, 0x28, 0x96, 0x60, 0x01, 0x10, 0x10, 0xC0, 0x3B, 0x60, 0x02, 0x10, 0x11, 0x28, 0x9B, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x12, 0xC0, 0x3B, 0x60, 0x01, 0x10, 0x10, 0x28, 0xA0, 0x60, 0x02, 0x10, 0x11, 0x40, 0x3C, 0x60, 0x00, 0x10, 0x12, 0x28, 0xA5, 0x60, 0x01,
0x19, 0x1B, 0x10, 0x10, 0xC0, 0x3C, 0x60, 0x02, 0x10, 0x11, 0x28, 0xAA, 0x60, 0x00, 0x10, 0x12, 0xC0, 0x3C, 0x60, 0x01, 0x10, 0x10, 0x28, 0xAF, 0x60, 0x02,
0x19, 0x1B, 0x10, 0x11, 0xC0, 0x3C, 0x60, 0x00, 0x10, 0x12, 0x28, 0xB4, 0x60, 0x01, 0x10, 0x10, 0xC0, 0x3C, 0x60, 0x02, 0x10, 0x11, 0x28, 0xB9, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x12, 0xC0, 0x3C, 0x60, 0x01, 0x10, 0x10, 0x28, 0xBE, 0x60, 0x02, 0x10, 0x11, 0xC0, 0x3C, 0x60, 0x00, 0x10, 0x12, 0x29, 0xCC, 0x60, 0x01,
0x19, 0x1B, 0x10, 0x10, 0x00, 0x37, 0x60, 0x02, 0x10, 0x11, 0x29, 0xD1, 0x60, 0x00, 0x10, 0x12, 0x00, 0x37, 0x60, 0x01, 0x10, 0x10, 0x29, 0xD6, 0x60, 0x02,
0x19, 0x1B, 0x10, 0x11, 0x00, 0x37, 0x60, 0x00, 0x10, 0x12, 0x29, 0xDB, 0x60, 0x01, 0x10, 0x10, 0x00, 0x37, 0x60, 0x02, 0x10, 0x11, 0x0D, 0xD8, 0x60, 0x08,
0x19, 0x1B, 0x10, 0x12, 0x27, 0x15, 0x60, 0x00, 0x10, 0x17, 0x40, 0x3E, 0x60, 0x01, 0x10, 0x00, 0x27, 0x1A, 0x60, 0x02, 0x10, 0x01, 0x80, 0x3C, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x02, 0x28, 0x64, 0x60, 0x01, 0x10, 0x00, 0x40, 0x3C, 0x60, 0x02, 0x10, 0x01, 0x28, 0x69, 0x60, 0x00, 0x10, 0x02, 0x40, 0x3C, 0x60, 0x01,
0x19, 0x1B, 0x10, 0x00, 0x28, 0x6E, 0x60, 0x02, 0x10, 0x01, 0x80, 0x3A, 0x60, 0x00, 0x10, 0x02, 0x28, 0x73, 0x60, 0x01, 0x10, 0x00, 0x80, 0x3A, 0x60, 0x02,
0x19, 0x1B, 0x10, 0x01, 0x28, 0xA0, 0x60, 0x00, 0x10, 0x02, 0x40, 0x3C, 0x60, 0x01, 0x10, 0x00, 0x29, 0xCC, 0x60, 0x02, 0x10, 0x01, 0x00, 0x37, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x02, 0x29, 0xD1, 0x60, 0x01, 0x10, 0x00, 0x00, 0x37, 0x60, 0x02, 0x10, 0x01, 0x29, 0xD6, 0x60, 0x00, 0x10, 0x02, 0x00, 0x37, 0x60, 0x01,
0x19, 0x1B, 0x10, 0x00, 0x29, 0xDB, 0x60, 0x02, 0x10, 0x01, 0x00, 0x37, 0x60, 0x00, 0x10, 0x02, 0x0D, 0xEF, 0x60, 0x09, 0x10, 0x00, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x10, 0x07, 0x70, 0x00, 0xF0, 0x00, 0x10, 0x17, 0x70, 0x00, 0xD0, 0x08, 0x0C, 0xDF, 0x60, 0x0B, 0xA0, 0xBF, 0x30, 0x30, 0x23, 0xD6, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x26, 0xE8, 0xD0, 0x80, 0x0D, 0x9B, 0x60, 0x08, 0xA0, 0xBC, 0xF0, 0x00, 0x00, 0x02, 0xA0, 0xBB, 0x90, 0x82, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x82, 0x8A, 0x70, 0x00, 0x90, 0x03, 0x90, 0x8A, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xFB, 0x82, 0xBF, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x01, 0x99, 0xD2, 0x80, 0xF0, 0x00, 0x0D, 0x9A, 0x60, 0x08, 0xF0, 0x00, 0x26, 0xC1, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x02, 0xA0, 0xB2,
0x19, 0x1B, 0x90, 0x82, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x8A, 0x70, 0x00, 0x90, 0x03, 0x90, 0x8A, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xFB,
0x19, 0x1B, 0x82, 0x80, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x0D, 0xAB, 0x60, 0x0D, 0xF0, 0x00, 0x3F, 0xFF, 0x60, 0x02,
0x19, 0x1B, 0xF0, 0x00, 0x00, 0x51, 0xA0, 0xA9, 0xC2, 0x53, 0x70, 0x00, 0xF0, 0x00, 0x8E, 0xC4, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x70, 0x00, 0x97, 0xFC,
0x19, 0x1B, 0xD4, 0x8F, 0x01, 0x99, 0xD2, 0x80, 0x40, 0x05, 0x0D, 0xA4, 0x60, 0x0D, 0x40, 0x17, 0x3F, 0xFF, 0x60, 0x02, 0x9F, 0x7D, 0x00, 0x51, 0xA0, 0xA2,
0x19, 0x1B, 0xC2, 0x53, 0x70, 0x00, 0xF0, 0x00, 0x82, 0xC4, 0x27, 0x1C, 0xD1, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x97, 0xFC, 0x91, 0x46, 0x27, 0x20, 0xD0, 0x80,
0x19, 0x1B, 0x40, 0x07, 0x01, 0x99, 0xD2, 0x80, 0xF0, 0x00, 0x0D, 0x8E, 0x60, 0x0E, 0x40, 0x07, 0x25, 0xC1, 0xA0, 0x9B, 0x9E, 0x79, 0x2E, 0x40, 0x40, 0x14,
0x19, 0x1B, 0x40, 0x36, 0x31, 0x67, 0x90, 0x19, 0x2F, 0x45, 0x19, 0x64, 0x60, 0x02, 0x4F, 0xF0, 0x1A, 0x5E, 0x60, 0x03, 0x83, 0x54, 0x40, 0x36, 0xF0, 0x00,
0x19, 0x1B, 0x83, 0x5C, 0x40, 0x00, 0xE2, 0x00, 0xF0, 0x00, 0x40, 0x10, 0xE2, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x9C, 0x11, 0xF0, 0x00, 0x0D, 0xD8, 0x60, 0x0D, 0x40, 0x36, 0x22, 0xF0, 0xD2, 0x80, 0x0D, 0xB3, 0x60, 0x0D, 0xE6, 0x00,
0x19, 0x1B, 0x40, 0x14, 0x21, 0x40, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x51, 0xA0, 0x8C, 0x90, 0x41, 0x70, 0x00, 0xF0, 0x00, 0x82, 0x45, 0x70, 0x00, 0x90, 0x1D,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x01, 0xF0, 0x00, 0x70, 0xDC, 0x8F, 0xFB, 0x20, 0xD1, 0x3F, 0xFF, 0x60, 0x02, 0xF0, 0x00, 0x0C, 0xDF, 0x60, 0x0B,
0x19, 0x1B, 0xC2, 0x53, 0x31, 0x61, 0xF0, 0x00, 0xD4, 0x8E, 0x30, 0x33, 0xF0, 0x00, 0xD4, 0x4A, 0x37, 0xC6, 0xF0, 0x00, 0xC6, 0xA2, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xC3, 0xA0, 0x3D, 0x42, 0xF0, 0x00, 0xF0, 0x00, 0x31, 0xE0, 0xD0, 0x08, 0xC6, 0x24, 0x31, 0xE0, 0xF0, 0x00, 0x90, 0x00, 0x3D, 0x44, 0xF0, 0x00,
0x19, 0x1B, 0x83, 0xB6, 0x70, 0x00, 0xE0, 0x40, 0x40, 0xD5, 0x21, 0x41, 0xA0, 0x7C, 0xCC, 0x0B, 0x40, 0x00, 0xF0, 0x00, 0x80, 0xED, 0x23, 0xEA, 0xD2, 0x80,
0x19, 0x1B, 0xBF, 0x60, 0x20, 0x60, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0xE1, 0xF0, 0x00, 0xF0, 0x00, 0x23, 0xEA, 0xD2, 0x80, 0x90, 0xC6, 0x23, 0xDE, 0xD2, 0x80,
0x19, 0x1B, 0x4F, 0x95, 0x40, 0x14, 0xA0, 0x75, 0x81, 0x75, 0x70, 0x00, 0xF0, 0x00, 0xAF, 0x43, 0x70, 0x00, 0xF0, 0x00, 0xC2, 0xE0, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x80, 0xC3, 0x0C, 0xDF, 0x60, 0x0B, 0xF0, 0x00, 0x33, 0x63, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0xE3, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0x33, 0xA0, 0x41,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x80, 0x12, 0x40, 0xD5, 0x21, 0x41, 0xA0, 0x6C, 0xCC, 0x0B, 0x40, 0x00, 0xF0, 0x00, 0x80, 0xED, 0x23, 0xEA, 0xD2, 0x80,
0x19, 0x1B, 0xBF, 0x60, 0x20, 0x60, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0xE1, 0xF0, 0x00, 0xF0, 0x00, 0x23, 0xEA, 0xD2, 0x80, 0x90, 0xC6, 0x23, 0xDE, 0xD2, 0x80,
0x19, 0x1B, 0x4F, 0x95, 0x40, 0x14, 0xA0, 0x65, 0x81, 0x75, 0x70, 0x00, 0x40, 0x06, 0xAF, 0x43, 0x70, 0x00, 0xF0, 0x00, 0xC2, 0xE0, 0x0C, 0xDF, 0x60, 0x0B,
0x19, 0x1B, 0xF0, 0x00, 0x31, 0xE0, 0xF0, 0x00, 0x80, 0xC3, 0x40, 0x36, 0xE6, 0x00, 0xC6, 0x24, 0x30, 0x33, 0xF0, 0x00, 0xF0, 0x00, 0x33, 0x63, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x34, 0xE3, 0xF0, 0x00, 0xF0, 0x00, 0x3D, 0x44, 0xF0, 0x00, 0xF0, 0x00, 0x37, 0xC6, 0xA0, 0x2E, 0xF0, 0x00, 0x23, 0x66, 0xA0, 0x31,
0x19, 0x1B, 0x82, 0x92, 0x0B, 0xB8, 0x60, 0x03, 0x47, 0xF4, 0x23, 0xE0, 0xD2, 0x80, 0x52, 0x08, 0x60, 0x05, 0x98, 0x03, 0x82, 0x92, 0x52, 0x08, 0x60, 0x03,
0x19, 0x1B, 0x47, 0xF4, 0x23, 0xE0, 0xD2, 0x80, 0x52, 0x08, 0x60, 0x05, 0x98, 0x23, 0xF0, 0x00, 0x33, 0xE4, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0x65, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x35, 0x64, 0xF0, 0x00, 0xF0, 0x00, 0x35, 0xE5, 0xF0, 0x00, 0xF0, 0x00, 0x23, 0x66, 0xA0, 0x4F, 0x91, 0x8E, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x33, 0x66, 0xA0, 0x24, 0x82, 0x92, 0x52, 0x08, 0x60, 0x03, 0xF0, 0x00, 0x23, 0xE0, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x9C, 0x05,
0x19, 0x1B, 0x82, 0x92, 0x0B, 0xB8, 0x60, 0x03, 0xF0, 0x00, 0x23, 0xE0, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x9B, 0xF7, 0x0D, 0x94, 0x60, 0x0D, 0xA0, 0x2B,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xF5, 0xF0, 0x00, 0x24, 0xE6, 0xA0, 0x44, 0x9F, 0xBE, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x34, 0xE6, 0xA0, 0x19,
0x19, 0x1B, 0x82, 0x92, 0x52, 0x08, 0x60, 0x03, 0xF0, 0x00, 0x23, 0xE0, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x9C, 0x05, 0x82, 0x92, 0x0B, 0xB8, 0x60, 0x03,
0x19, 0x1B, 0xF0, 0x00, 0x23, 0xE0, 0xD2, 0x80, 0xF0, 0x00, 0x70, 0x00, 0x9B, 0xF7, 0x0D, 0x97, 0x60, 0x0D, 0xA0, 0x20, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0xF5,
0x19, 0x1B, 0x40, 0x14, 0x23, 0xE1, 0xA0, 0x39, 0xC2, 0x63, 0x25, 0x62, 0xF0, 0x00, 0xF0, 0x00, 0x24, 0x65, 0x90, 0x07, 0xC2, 0xA3, 0x25, 0xE6, 0xF0, 0x00,
0x19, 0x1B, 0x90, 0x80, 0x70, 0x00, 0x90, 0x02, 0x83, 0x77, 0x70, 0x00, 0xF0, 0x00, 0x25, 0x60, 0x23, 0xE0, 0xEB, 0xC0, 0x0C, 0xDF, 0x60, 0x0B, 0xA0, 0x32,
0x19, 0x1B, 0xF0, 0x00, 0x30, 0x30, 0xF0, 0x00, 0xF0, 0x00, 0x21, 0xE0, 0xD0, 0x08, 0xC2, 0xA3, 0x25, 0xE6, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x93, 0xF9,
0x19, 0x1B, 0x90, 0x40, 0x70, 0x00, 0x8F, 0xFA, 0xF0, 0x00, 0x21, 0xE0, 0xAF, 0x0F, 0xF0, 0x00, 0x24, 0x62, 0xD2, 0x80, 0xF0, 0x00, 0x32, 0x60, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x32, 0xE1, 0xD0, 0x08, 0xF0, 0x00, 0x23, 0xED, 0xD2, 0x80, 0xB8, 0x68, 0x22, 0x60, 0xF0, 0x00, 0xF0, 0x00, 0x22, 0xE1, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x23, 0xEA, 0xD2, 0x80, 0xF0, 0x00, 0x23, 0xDE, 0xD2, 0x80, 0xA9, 0x88, 0x70, 0x00, 0xF0, 0x00, 0xAB, 0xF8, 0x23, 0xE4, 0xD2, 0x80,
0x19, 0x1B, 0x46, 0x43, 0x21, 0x42, 0xA0, 0x21, 0xA0, 0x98, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x23, 0xE7, 0xD2, 0x80, 0xF0, 0x00, 0x23, 0xC6, 0xD2, 0x80,
0x19, 0x1B, 0x90, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xDC, 0x09, 0xF0, 0x00, 0x23, 0xCE, 0xD0, 0x80, 0x47, 0xE5, 0x70, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0x40, 0x16, 0x20, 0xD3, 0xA0, 0x19, 0x83, 0x5D, 0x20, 0x52, 0xF0, 0x00, 0xC2, 0xF5, 0x21, 0x54, 0x98, 0x07, 0xC2, 0xB6, 0x70, 0x00, 0x90, 0x02,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0x90, 0x05, 0xF0, 0x00, 0x70, 0x00, 0x80, 0x02, 0xC2, 0xB6, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD4, 0x09,
0x19, 0x1B, 0x82, 0x64, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xDC, 0x09, 0xF0, 0x00, 0x31, 0x51, 0xF0, 0x00, 0xF0, 0x00, 0x30, 0xD2, 0xD0, 0x08,
0x19, 0x1B, 0x0D, 0xEF, 0x60, 0x0B, 0xA0, 0x0D, 0x9E, 0x79, 0x20, 0x36, 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x45, 0xF0, 0x00, 0x9F, 0xBC, 0x70, 0x00, 0xE0, 0x40,
0x19, 0x1B, 0x91, 0x45, 0x70, 0x00, 0xD0, 0x09, 0x26, 0x44, 0x27, 0x2D, 0xD5, 0x80, 0x91, 0x86, 0x70, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x27, 0x32, 0xD5, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x70, 0x00, 0xAF, 0x67, 0x2F, 0x41, 0x27, 0x36, 0xD0, 0x80, 0xF0, 0x00, 0x29, 0x15, 0xD2, 0x80, 0xF0, 0x00, 0x3B, 0x9B, 0xD2, 0x80,
0x19, 0x1B, 0xF0, 0x00, 0x28, 0x88, 0xD0, 0x80, 0xF0, 0x00, 0x28, 0xDD, 0xD0, 0x80, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08, 0xF0, 0x00, 0x16, 0xC3, 0x60, 0x08,
0x19, 0x1B, 0xF0, 0x00, 0x00, 0x9A, 0x60, 0x00, 0xF0, 0x00, 0x02, 0xE3, 0x60, 0x00, 0x10, 0x00, 0x04, 0xF4, 0x60, 0x00, 0x10, 0x00, 0x06, 0xFF, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x09, 0x07, 0x60, 0x00, 0x10, 0x00, 0x0B, 0x10, 0x60, 0x00, 0x10, 0x00, 0x0D, 0x1F, 0x60, 0x00, 0x10, 0x00, 0x0F, 0x65, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x0F, 0x65, 0x60, 0x00, 0x10, 0x00, 0x0D, 0x1F, 0x60, 0x00, 0x10, 0x00, 0x0B, 0x10, 0x60, 0x00, 0x10, 0x00, 0x09, 0x07, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x06, 0xFF, 0x60, 0x00, 0x10, 0x00, 0x04, 0xF4, 0x60, 0x00, 0x10, 0x00, 0x02, 0xE3, 0x60, 0x00, 0x10, 0x00, 0x00, 0x9A, 0x60, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x16, 0xD3, 0x60, 0x08, 0xF0, 0x00, 0xFF, 0x93, 0x60, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0xFE, 0x37, 0x60, 0x00, 0x10, 0x00, 0xFD, 0xD9, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x9F, 0x60, 0x00, 0x10, 0x00, 0x03, 0x85, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x0D, 0x6B, 0x60, 0x00, 0x10, 0x00, 0x16, 0x84, 0x60, 0x00, 0x10, 0x00, 0x1E, 0x49, 0x60, 0x00, 0x10, 0x00, 0x1E, 0x49, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x16, 0x84, 0x60, 0x00, 0x10, 0x00, 0x0D, 0x6B, 0x60, 0x00, 0x10, 0x00, 0x03, 0x85, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x9F, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0xFD, 0xD9, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x37, 0x60, 0x00, 0x10, 0x00, 0xFF, 0x93, 0x60, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x16, 0xE3, 0x60, 0x08, 0xF0, 0x00, 0x00, 0x64, 0x60, 0x00, 0xF0, 0x00, 0xFF, 0xA8, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0xFF, 0xA6, 0x60, 0x00, 0x10, 0x00, 0xFF, 0xDF, 0x60, 0x00, 0x10, 0x00, 0x00, 0x01, 0x60, 0x00, 0x10, 0x00, 0x01, 0x28, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x01, 0x2F, 0x60, 0x00, 0x10, 0x00, 0xFD, 0x23, 0x60, 0x00, 0x10, 0x00, 0xFD, 0xA1, 0x60, 0x00, 0x10, 0x00, 0x03, 0x89, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x02, 0x54, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x7D, 0x60, 0x00, 0x10, 0x00, 0x00, 0x8C, 0x60, 0x00, 0x10, 0x00, 0xFB, 0xE1, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0xF9, 0x42, 0x60, 0x00, 0x10, 0x00, 0x0C, 0x47, 0x60, 0x00, 0x10, 0x00, 0x0E, 0xA2, 0x60, 0x00, 0x10, 0x00, 0xEC, 0x43, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0xEA, 0xCE, 0x60, 0x00, 0x10, 0x00, 0x17, 0x46, 0x60, 0x00, 0x10, 0x00, 0x17, 0x46, 0x60, 0x00, 0x10, 0x00, 0xEA, 0xCE, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0xEC, 0x43, 0x60, 0x00, 0x10, 0x00, 0x0E, 0xA2, 0x60, 0x00, 0x10, 0x00, 0x0C, 0x47, 0x60, 0x00, 0x10, 0x00, 0xF9, 0x42, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0xFB, 0xE1, 0x60, 0x00, 0x10, 0x00, 0x00, 0x8C, 0x60, 0x00, 0x10, 0x00, 0xFE, 0x7D, 0x60, 0x00, 0x10, 0x00, 0x02, 0x54, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x03, 0x89, 0x60, 0x00, 0x10, 0x00, 0xFD, 0xA1, 0x60, 0x00, 0x10, 0x00, 0xFD, 0x23, 0x60, 0x00, 0x10, 0x00, 0x01, 0x2F, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x01, 0x28, 0x60, 0x00, 0x10, 0x00, 0x00, 0x01, 0x60, 0x00, 0x10, 0x00, 0xFF, 0xDF, 0x60, 0x00, 0x10, 0x00, 0xFF, 0xA6, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0xFF, 0xA8, 0x60, 0x00, 0x10, 0x00, 0x00, 0x64, 0x60, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00,
0x19, 0x1B, 0xF0, 0x00, 0x17, 0x0B, 0x60, 0x08, 0xF0, 0x00, 0x00, 0x03, 0x60, 0x00, 0xF0, 0x00, 0x54, 0xC0, 0x60, 0x00, 0x10, 0x00, 0x00, 0x05, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x00, 0x05, 0x60, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x60, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x60, 0x00, 0x10, 0x00, 0x09, 0xC0, 0x60, 0x00,
0x19, 0x1B, 0x10, 0x00, 0x0A, 0x20, 0x60, 0x00, 0x10, 0x00, 0x1D, 0x40, 0x60, 0x00, 0x10, 0x00, 0x1E, 0x60, 0x60, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00,
0x0D, 0x1B, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xD0, 0x08,
0x03, 0x1C, 0x00, 0x00,
0x03, 0x1C, 0x00, 0x75,
0x19, 0x1B, 0x40, 0x13, 0x40, 0x2F, 0x41, 0x68, 0x41, 0xC1, 0x42, 0x14, 0x42, 0xA6, 0x44, 0xDE, 0x44, 0xE9, 0x45, 0xFB, 0x46, 0x11, 0x47, 0xC5, 0x47, 0xFC,
0x19, 0x1B, 0x4D, 0x5D, 0x4E, 0x56, 0x4E, 0x58, 0x4E, 0x5B, 0x4D, 0x83, 0x4E, 0x0A, 0x4E, 0x0B, 0x4E, 0x49, 0x4E, 0x53, 0x4F, 0x92, 0x4F, 0xEA, 0x50, 0x41,
0x19, 0x1B, 0x50, 0x74, 0x50, 0x80, 0x55, 0x31, 0x56, 0x60, 0x56, 0xD4, 0x56, 0xD9, 0x58, 0x29, 0x59, 0xB4, 0x5A, 0x3A, 0x5B, 0x79, 0x5B, 0xA2, 0x5B, 0xEF,
0x19, 0x1B, 0x5D, 0xDC, 0x60, 0x3A, 0x60, 0x88, 0x60, 0xA8, 0x61, 0x9F, 0x61, 0xB6, 0x61, 0xDF, 0x61, 0xF5, 0x62, 0x14, 0x62, 0x59, 0x62, 0x9B, 0x62, 0xA1,
0x17, 0x1B, 0x63, 0x69, 0x64, 0x3B, 0x66, 0x09, 0x66, 0xE7, 0x67, 0x0B, 0x67, 0x1A, 0x67, 0x29, 0x68, 0x87, 0x68, 0x99, 0x68, 0xA7, 0x68, 0xB2,
0x03, 0x1C, 0x00, 0x00,
0x03, 0x14, 0x00, 0x01,
0x02, 0xFF, 50,
0x09, 0x40, 0x04, 0x01, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, // 9216 MHz crystal reference
//0x09, 0x40, 0x04, 0x01, 0x00, 0x3D, 0x09, 0x00, 0x00, 0x00, // 4000 MHz crystal reference
0x05, 0x40, 0x05, 0x01, 0x00, 0x01,
0x02, 0xFF, 100,
0x05, 0x20, 0x14, 0x01, 0x00, 0x01, // FM 20 Set_MphSuppression (1, 1)
0x05, 0x20, 0x16, 0x01, 0x00, 0x01, // FM 22 Set_ChannelEqualizer (1, 1)
};
static const uint8_t INIT_SET1[] PROGMEM =
{
0x07, 0x20, 0x17, 0x01, 0x00, 0x01, 0x04, 0x4C, // FM 23 Set_NoiseBlanker (1, 1, 1100)
0x09, 0x20, 0x18, 0x01, 0x00, 0xD2, 0x00, 0xD2, 0x00, 0xFA, // FM 24 Set_NoiseBlanker_Options (1, 210, 210, 250)
0x0B, 0x20, 0x28, 0x01, 0x00, 0x78, 0x01, 0xF4, 0x00, 0x0A, 0x00, 0x14, // FM 40 Set_Softmute_Time (1, 120, 500, 10, 20)
0x09, 0x20, 0x2A, 0x01, 0x00, 0x01, 0x00, 0x96, 0x00, 0xDC, // FM 42 Set_Softmute_Level (1, 1, 150, 220)
0x09, 0x20, 0x2B, 0x01, 0x00, 0x03, 0x00, 0xC8, 0x03, 0xE8, // FM 43 Set_Softmute_Noise (1, 3, 200, 1000)
0x09, 0x20, 0x2C, 0x01, 0x00, 0x03, 0x00, 0xC8, 0x03, 0xE8, // FM 44 Set_Softmute_Mph (1, 3, 200, 1000)
0x07, 0x20, 0x2D, 0x01, 0x00, 0x01, 0x00, 0xF0, // FM 45 Set_Softmute_Max (1, 1, 240)
0x0B, 0x20, 0x32, 0x01, 0x00, 0xC8, 0x01, 0xF4, 0x00, 0x0A, 0x00, 0x50, // FM 50 Set_Highcut_Time (1, 200, 500, 10, 80)
0x0B, 0x20, 0x33, 0x01, 0x00, 0x01, 0x00, 0xFA, 0x00, 0x82, 0x01, 0xF4, // FM 51 Set_Highcut_ Mod (1, 1, 250, 130, 500)
0x09, 0x20, 0x34, 0x01, 0x00, 0x01, 0x01, 0x68, 0x01, 0x2C, // FM 52 Set_Highcut_Level (1, 1, 360, 300)
0x09, 0x20, 0x35, 0x01, 0x00, 0x01, 0x00, 0xC8, 0x00, 0xC8, // FM 53 Set_Highcut_Noise (1, 1, 200, 200)
0x09, 0x20, 0x36, 0x01, 0x00, 0x01, 0x00, 0xC8, 0x00, 0xC8, // FM 54 Set_HighCut_Mph (1, 1, 200, 200)
0x07, 0x20, 0x37, 0x01, 0x00, 0x01, 0x09, 0x60, // FM 55 Set_HighCut_Max (1, 1, 2400)
0x07, 0x20, 0x38, 0x01, 0x00, 0x01, 0x3A, 0x98, // FM 56 Set_Highcut_Min (1, 1, 15000)
0x07, 0x20, 0x39, 0x01, 0x00, 0x01, 0x00, 0x78, // FM 57 Set_Lowcut_Max (1, 1, 120)
0x07, 0x20, 0x3A, 0x01, 0x00, 0x01, 0x00, 0x14, // FM 58 Set_Lowcut_Min (1, 1, 20)
0x0B, 0x20, 0x3C, 0x01, 0x00, 0xC8, 0x0F, 0xA0, 0x00, 0x14, 0x00, 0x50, // FM 60 Set_Stereo_Time (1, 200, 4000, 20, 80)
0x0B, 0x20, 0x3D, 0x01, 0x00, 0x01, 0x01, 0xA4, 0x00, 0xB4, 0x03, 0xE8, // FM 61 Set_Stereo_Mod (1, 1, 420, 180, 1000)
0x09, 0x20, 0x3E, 0x01, 0x00, 0x03, 0x01, 0xCC, 0x00, 0xF0, // FM 62 Set_Stereo_Level (1, 3, 460, 240)
0x09, 0x20, 0x3F, 0x01, 0x00, 0x03, 0x01, 0xF4, 0x00, 0xC8, // FM_Set_Stereo_Noise (1, 3, 500, 200)
0x09, 0x20, 0x40, 0x01, 0x00, 0x03, 0x01, 0xF4, 0x00, 0xC8, // FM_Set_Stereo_Mph (1, 3, 500, 200)
0x05, 0x20, 0x41, 0x01, 0x00, 0x01, // FM 65 Set_Stereo_Max (1, 1)
0x07, 0x20, 0x42, 0x01, 0x00, 0x01, 0x01, 0x90, // FM 66 Set_Stereo_Min (1, 1, 400)
0x0B, 0x20, 0x46, 0x01, 0x00, 0x78, 0x01, 0xF4, 0x00, 0x50, 0x00, 0xA0, // FM 70 Set_StHiBlend_Time (1, 120, 500, 80, 160)
0x0B, 0x20, 0x47, 0x01, 0x00, 0x01, 0x00, 0xF0, 0x00, 0x78, 0x02, 0x9E, // FM 71 Set_StHiBlend_Mod (1, 1, 240, 120, 670)
0x09, 0x20, 0x48, 0x01, 0x00, 0x01, 0x01, 0xF4, 0x01, 0x2C, // FM 72 Set_StHiBlend_Level (1, 1, 500, 300)
0x09, 0x20, 0x49, 0x01, 0x00, 0x03, 0x00, 0x50, 0x00, 0xA0, // FM 73 Set_StHiBlend_Noise (1, 3, 80, 160)
0x09, 0x20, 0x4A, 0x01, 0x00, 0x03, 0x00, 0x50, 0x00, 0xA0, // FM 74 Set_StHiBlend_Mph (1, 3, 80, 160)
0x07, 0x20, 0x4B, 0x01, 0x00, 0x01, 0x0F, 0xA0, // FM 75 Set_StHiBlend_Max (1, 1, 4000)
0x07, 0x20, 0x4C, 0x01, 0x00, 0x01, 0x1B, 0x58, // FM 76 Set_StHiBlend_Min (1, 1, 7000)
0x05, 0x20, 0x56, 0x01, 0x03, 0x84, // FM 86 Set_Bandwidth_Options (1, 900)
0x0B, 0x20, 0x5B, 0x01, 0x05, 0xDC, 0x05, 0xDC, 0x05, 0xDC, 0x05, 0xDC, // FM_Set_StBandBlend_Gain (1, 1500, 1500, 1500, 1500)
0x0B, 0x20, 0x5C, 0x01, 0x00, 0xFA, 0x00, 0xFA, 0x00, 0xFA, 0x00, 0xFA, // FM 92 Set_StBandBlend_Bias (1, 250, 250, 250, 250)
0x0B, 0x21, 0x0E, 0x01, 0x00, 0x01, 0x00, 0x02, 0x04, 0xB0, 0x00, 0x03, // AM_Set_CoChannelDet (1, 1, 2, 1200, 3)
0x07, 0x21, 0x17, 0x01, 0x00, 0x01, 0x04, 0xB0, // AM_Set_NoiseBlanker (1, 1, 1200)
0x07, 0x21, 0x18, 0x01, 0x00, 0x01, 0x04, 0xB0, // AM Set_NoiseBlanker_Audio (1, 1, 1200)
0x11, 0x21, 0x26, 0x01, 0x00, 0x00, 0xFF, 0xF6, 0xFF, 0xEC, 0xFF, 0xE2, 0xFF, 0xD8, 0xFF, 0xCE, 0xFF, 0xC4, // AM_Set_LevelStep (1, 0, -10, -20, -30, -40, -50, -60)
0x05, 0x21, 0x27, 0x01, 0xFE, 0xD4, // AM_Set_LevelOffset (1, -300)
0x0B, 0x21, 0x28, 0x01, 0x01, 0xF4, 0x0F, 0xA0, 0x00, 0x64, 0x01, 0xF4, // AM_Set_Softmute_Time (1, 500, 4000, 100, 500)
0x09, 0x21, 0x2A, 0x01, 0x00, 0x01, 0x01, 0x54, 0x01, 0x2C, // AM Set_Softmute_Level (1, 1, 340, 300)
0x07, 0x21, 0x2D, 0x01, 0x00, 0x01, 0x01, 0x4A, // AM_Set_Softmute_Max (1, 1, 330)
0x0B, 0x21, 0x32, 0x01, 0x01, 0xF4, 0x0F, 0xA0, 0x00, 0x64, 0x01, 0xF4, // AM_Set_Highcut_Time (1, 500, 4000, 100, 500)
0x07, 0x21, 0x37, 0x01, 0x00, 0x01, 0x05, 0xDC, // AM_Set_Highcut_Max (1, 1, 1500)
0x07, 0x21, 0x38, 0x01, 0x00, 0x01, 0x0B, 0xB8, // AM_Set_Highcut_Min (1, 1, 3000)
0x07, 0x21, 0x39, 0x01, 0x00, 0x01, 0x01, 0x2C, // AM_Set_Lowcut_Max (1, 1, 300)
0x07, 0x21, 0x3A, 0x01, 0x00, 0x01, 0x00, 0x1E, // AM_Set_Lowcut_Min (1, 1, 30)
0x07, 0x30, 0x0D, 0x01, 0x00, 0x80, 0x00, 0xE0, // Audio Output Source DAC L/R
0x00
};
static const uint8_t INIT_SET2[] PROGMEM =
{
0x07, 0x20, 0x17, 0x01, 0x00, 0x01, 0x03, 0xE8, // FM 23 Set_NoiseBlanker (1, 1, 1000)
0x09, 0x20, 0x18, 0x01, 0x00, 0x64, 0x00, 0x64, 0x00, 0xC8, // FM 24 Set_NoiseBlanker_Options (1, 100, 100, 200)
0x0B, 0x20, 0x28, 0x01, 0x00, 0x78, 0x01, 0xF4, 0x00, 0x0A, 0x00, 0x14, // FM_Set_SoftMute_Time (1, 120, 500, 10, 20)
0x09, 0x20, 0x2A, 0x01, 0x00, 0x03, 0x00, 0x96, 0x00, 0xDC, // FM_Set_SoftMute_Level (1, 3, 150, 220)
0x09, 0x20, 0x2B, 0x01, 0x00, 0x03, 0x00, 0xC8, 0x03, 0xE8, // FM_Set_SoftMute_Noise (1, 3, 200, 1000)
0x09, 0x20, 0x2C, 0x01, 0x00, 0x03, 0x00, 0xC8, 0x03, 0xE8, // FM_Set_SoftMute_Mph (1, 3, 200, 1000)
0x07, 0x20, 0x2D, 0x01, 0x00, 0x01, 0x00, 0xC8, // FM_Set_SoftMute_Max (1, 1, 200)
0x0B, 0x20, 0x32, 0x01, 0x00, 0x64, 0x01, 0x90, 0x00, 0x0A, 0x00, 0x50, // FM_Set_HighCut_Time (1, 100, 400, 10, 80)
0x0B, 0x20, 0x33, 0x01, 0x00, 0x01, 0x00, 0xFA, 0x00, 0x82, 0x01, 0xF4, // FM_Set_HighCut_Mod (1, 1, 250, 130, 500)
0x09, 0x20, 0x34, 0x01, 0x00, 0x03, 0x00, 0xC8, 0x01, 0x2C, // FM Set_Highcut_Level (1, 3, 200, 300)
0x09, 0x20, 0x35, 0x01, 0x00, 0x03, 0x00, 0xC8, 0x00, 0xC8, // FM_Set_HighCut_Noise (1, 3, 200, 200)
0x09, 0x20, 0x36, 0x01, 0x00, 0x03, 0x00, 0xC8, 0x00, 0xC8, // FM_Set_HighCut_Mph (1, 3, 200, 200)
0x07, 0x20, 0x37, 0x01, 0x00, 0x01, 0x09, 0x60, // FM_Set_HighCut_Max (1, 1, 2400)
0x07, 0x20, 0x38, 0x01, 0x00, 0x01, 0x3A, 0x98, // FM Set_Highcut_Min (1, 1, 15000)
0x07, 0x20, 0x39, 0x01, 0x00, 0x01, 0x00, 0x64, // FM_Set_LowCut_Max (1, 1, 100)
0x07, 0x20, 0x3A, 0x01, 0x00, 0x00, 0x00, 0x14, // FM_Set_LowCut_Min (1, 0, 20)
0x05, 0x20, 0x3B, 0x01, 0x00, 0x01, // FM_Set_HighCut_Options (1, 1)
0x0B, 0x20, 0x3C, 0x01, 0x00, 0xC8, 0x0F, 0xA0, 0x00, 0x14, 0x00, 0x50, // FM_Set_Stereo_Time (1, 200, 4000, 20, 80)
0x0B, 0x20, 0x3D, 0x01, 0x00, 0x01, 0x00, 0xD2, 0x00, 0x5A, 0x01, 0xF4, // FM_Set_Stereo_Mod (1, 1, 210, 90, 500)
0x09, 0x20, 0x3E, 0x01, 0x00, 0x03, 0x01, 0xCC, 0x00, 0xF0, // FM_Set_Stereo_Level (1, 3, 460, 240)
0x09, 0x20, 0x3F, 0x01, 0x00, 0x03, 0x00, 0x78, 0x00, 0xA0, // FM_Set_Stereo_Noise (1, 3, 120, 160)
0x09, 0x20, 0x40, 0x01, 0x00, 0x03, 0x00, 0x64, 0x00, 0x96, // FM_Set_Stereo_Mph (1, 3, 100, 150)
0x05, 0x20, 0x41, 0x01, 0x00, 0x01, // FM_Set_Stereo_Max (1, 1)
0x07, 0x20, 0x42, 0x01, 0x00, 0x01, 0x01, 0x90, // FM_Set_Stereo_Min (1, 1, 400)
0x0B, 0x20, 0x46, 0x01, 0x01, 0xF4, 0x07, 0xD0, 0x00, 0x14, 0x00, 0x14, // FM_Set_StHiBlend_Time (1, 500, 2000, 20, 20)
0x0B, 0x20, 0x47, 0x01, 0x00, 0x01, 0x00, 0xF0, 0x00, 0x78, 0x02, 0x9E, // FM_Set_StHiBlend_Mod (1, 1, 240, 120, 670)
0x09, 0x20, 0x48, 0x01, 0x00, 0x03, 0x02, 0x58, 0x00, 0xF0, // FM_Set_StHiBlend_Level (1, 3, 600, 240)
0x09, 0x20, 0x49, 0x01, 0x00, 0x03, 0x00, 0x50, 0x00, 0x8C, // FM_Set_StHiBlend_Noise (1, 3, 80, 140)
0x09, 0x20, 0x4A, 0x01, 0x00, 0x03, 0x00, 0x50, 0x00, 0x8C, // FM_Set_StHiBlend_Mph (1, 3, 80, 140)
0x07, 0x20, 0x4B, 0x01, 0x00, 0x01, 0x0F, 0xA0, // FM_Set_StHiBlend_Max (1, 1, 4000)
0x07, 0x20, 0x4C, 0x01, 0x00, 0x00, 0x1B, 0x58, // FM_Set_StHiBlend_Min (1, 0, 7000)
0x07, 0x20, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, // FM_Set_QualityStatus (1, 0, 0)
0x07, 0x20, 0x52, 0x01, 0x00, 0xC8, 0x00, 0x00, // FM_Set_QualityStatus (1, 200, 0)
0x0B, 0x21, 0x0E, 0x01, 0x00, 0x01, 0x00, 0x02, 0x04, 0xB0, 0x00, 0x03, // AM_Set_CoChannelDet (1, 1, 2, 1200, 3)
0x07, 0x21, 0x17, 0x01, 0x00, 0x01, 0x04, 0xB0, // AM_Set_NoiseBlanker (1, 1, 1200)
0x07, 0x21, 0x18, 0x01, 0x00, 0x01, 0x04, 0xB0, // AM Set_NoiseBlanker_Audio (1, 1, 1200)
0x11, 0x21, 0x26, 0x01, 0x00, 0x00, 0xFF, 0xF6, 0xFF, 0xEC, 0xFF, 0xE2, 0xFF, 0xD8, 0xFF, 0xCE, 0xFF, 0xC4, // AM_Set_LevelStep (1, 0, -10, -20, -30, -40, -50, -60)
0x05, 0x21, 0x27, 0x01, 0xFE, 0xD4, // AM_Set_LevelOffset (1, -300)
0x0B, 0x21, 0x28, 0x01, 0x01, 0xF4, 0x0F, 0xA0, 0x00, 0x64, 0x01, 0xF4, // AM_Set_Softmute_Time (1, 500, 4000, 100, 500)
0x09, 0x21, 0x2A, 0x01, 0x00, 0x01, 0x01, 0x54, 0x01, 0x2C, // AM Set_Softmute_Level (1, 1, 340, 300)
0x07, 0x21, 0x2D, 0x01, 0x00, 0x01, 0x01, 0x4A, // AM_Set_Softmute_Max (1, 1, 330)
0x0B, 0x21, 0x32, 0x01, 0x01, 0xF4, 0x0F, 0xA0, 0x00, 0x64, 0x01, 0xF4, // AM_Set_Highcut_Time (1, 500, 4000, 100, 500)
0x07, 0x21, 0x37, 0x01, 0x00, 0x01, 0x05, 0xDC, // AM_Set_Highcut_Max (1, 1, 1500)
0x07, 0x21, 0x38, 0x01, 0x00, 0x01, 0x0B, 0xB8, // AM_Set_Highcut_Min (1, 1, 3000)
0x07, 0x21, 0x39, 0x01, 0x00, 0x01, 0x01, 0x2C, // AM_Set_Lowcut_Max (1, 1, 300)
0x07, 0x21, 0x3A, 0x01, 0x00, 0x01, 0x00, 0x1E, // AM_Set_Lowcut_Min (1, 1, 30)
0x07, 0x30, 0x15, 0x01, 0x00, 0x80, 0x00, 0x01, // AUDIO_Set_Ana_Out (1, 128, 1)
0x07, 0x30, 0x0D, 0x01, 0x00, 0x21, 0x00, 0xE0, // AUDIO_Set_Output_Source (1, 33, 224)
0x07, 0x30, 0x0D, 0x01, 0x00, 0x80, 0x00, 0xE0, // AUDIO_Set_Output_Source (1, 128, 224)
0x00
};
static const uint8_t INIT_SET3[] PROGMEM =
{
0x07, 0x20, 0x17, 0x01, 0x00, 0x01, 0x03, 0xE8, // FM 23 Set_NoiseBlanker (1, 1, 1000)
0x09, 0x20, 0x18, 0x01, 0x00, 0xD2, 0x00, 0xD2, 0x00, 0xFA, // FM 24 Set_NoiseBlanker_Options (1, 210, 210, 250)
0x0B, 0x20, 0x28, 0x01, 0x00, 0x78, 0x01, 0xF4, 0x00, 0x0A, 0x00, 0x14, // FM 40 Set_Softmute_Time (1, 120, 500, 10, 20)
0x09, 0x20, 0x2A, 0x01, 0x00, 0x01, 0x00, 0x96, 0x00, 0xDC, // FM 42 Set_Softmute_Level (1, 1, 150, 220)
0x09, 0x20, 0x2B, 0x01, 0x00, 0x01, 0x00, 0x64, 0x03, 0xE8, // FM 43 Set_Softmute_Noise (1, 1, 100, 1000)
0x09, 0x20, 0x2C, 0x01, 0x00, 0x01, 0x00, 0x64, 0x03, 0xE8, // FM 44 Set_Softmute_Mph (1, 1, 100, 1000)
0x07, 0x20, 0x2D, 0x01, 0x00, 0x01, 0x00, 0x64, // FM 45 Set_Softmute_Max (1, 1, 100)
0x0B, 0x20, 0x32, 0x01, 0x00, 0x78, 0x00, 0xC8, 0x00, 0x0A, 0x00, 0x50, // FM_Set_HighCut_Time (1, 120, 200, 10, 80)
0x0B, 0x20, 0x33, 0x01, 0x00, 0x01, 0x00, 0xFA, 0x00, 0x82, 0x01, 0xF4, // FM 51 Set_Highcut_ Mod (1, 1, 250, 130, 500)
0x09, 0x20, 0x34, 0x01, 0x00, 0x01, 0x00, 0xC8, 0x01, 0x2C, // FM 52 Set_Highcut_Level (1, 1, 200, 300)
0x09, 0x20, 0x35, 0x01, 0x00, 0x01, 0x00, 0xFA, 0x00, 0xC8, // FM 53 Set_Highcut_Noise (1, 1, 250, 200)
0x09, 0x20, 0x36, 0x01, 0x00, 0x01, 0x00, 0xFA, 0x00, 0xC8, // FM 54 Set_HighCut_Mph (1, 1, 250, 200)
0x07, 0x20, 0x37, 0x01, 0x00, 0x01, 0x09, 0x60, // FM 55 Set_HighCut_Max (1, 1, 2400)
0x07, 0x20, 0x38, 0x01, 0x00, 0x01, 0x3A, 0x98, // FM 56 Set_Highcut_Min (1, 1, 15000)
0x07, 0x20, 0x39, 0x01, 0x00, 0x01, 0x00, 0x78, // FM 57 Set_Lowcut_Max (1, 1, 120)
0x07, 0x20, 0x3A, 0x01, 0x00, 0x01, 0x00, 0x14, // FM 58 Set_Lowcut_Min (1, 1, 20)
0x0B, 0x20, 0x3C, 0x01, 0x00, 0xC8, 0x07, 0xD0, 0x00, 0x14, 0x00, 0x50, // FM 60 Set_Stereo_Time (1, 200, 2000, 20, 80)
0x0B, 0x20, 0x3D, 0x01, 0x00, 0x01, 0x01, 0xA4, 0x01, 0x40, 0x03, 0xE8, // FM 61 Set_Stereo_Mod (1, 1, 420, 320, 1000)
0x09, 0x20, 0x3E, 0x01, 0x00, 0x01, 0x01, 0xCC, 0x00, 0xF0, // FM 62 Set_Stereo_Level (1, 1, 460, 240)
0x09, 0x20, 0x3F, 0x01, 0x00, 0x01, 0x02, 0x58, 0x00, 0xB4, // FM 63 Set_Stereo_Noise (1, 1, 600, 180)
0x09, 0x20, 0x40, 0x01, 0x00, 0x01, 0x02, 0x58, 0x00, 0xDC, // FM 64 Set_Stereo_Mph (1, 1, 600, 220)
0x05, 0x20, 0x41, 0x01, 0x00, 0x01, // FM 65 Set_Stereo_Max (1, 1)
0x07, 0x20, 0x42, 0x01, 0x00, 0x00, 0x01, 0x90, // FM 66 Set_Stereo_Min (1, 0, 400)
0x0B, 0x20, 0x46, 0x01, 0x00, 0x78, 0x01, 0xF4, 0x00, 0x50, 0x00, 0xA0, // FM 70 Set_StHiBlend_Time (1, 120, 500, 80, 160)
0x0B, 0x20, 0x47, 0x01, 0x00, 0x01, 0x00, 0xF0, 0x00, 0x78, 0x02, 0x9E, // FM 71 Set_StHiBlend_Mod (1, 1, 240, 120, 670)
0x09, 0x20, 0x48, 0x01, 0x00, 0x01, 0x01, 0xF4, 0x01, 0x2C, // FM 72 Set_StHiBlend_Level (1, 1, 500, 300)
0x09, 0x20, 0x49, 0x01, 0x00, 0x01, 0x00, 0x50, 0x00, 0x8C, // FM 73 Set_StHiBlend_Noise (1, 1, 80, 140)
0x09, 0x20, 0x4A, 0x01, 0x00, 0x01, 0x00, 0x50, 0x00, 0x8C, // FM 74 Set_StHiBlend_Mph (1, 1, 80, 140)
0x07, 0x20, 0x4B, 0x01, 0x00, 0x00, 0x0F, 0xA0, // FM 75 Set_StHiBlend_Max (1, 0, 4000)
0x07, 0x20, 0x4C, 0x01, 0x00, 0x00, 0x1B, 0x58, // FM 76 Set_StHiBlend_Min (1, 0, 7000)
0x05, 0x20, 0x56, 0x01, 0x03, 0x84, // FM 86 Set_Bandwidth_Options (1, 900)
0x07, 0x20, 0x5A, 0x01, 0x00, 0x32, 0x00, 0x32, // FM_Set_StBandBlend_Time (1, 50, 50)
0x0B, 0x20, 0x5B, 0x01, 0x05, 0xDC, 0x05, 0xDC, 0x05, 0xDC, 0x05, 0xDC, // FM_Set_StBandBlend_Gain (1, 1500, 1500, 1500, 1500)
0x0B, 0x20, 0x5C, 0x01, 0x00, 0xFA, 0x00, 0xFA, 0x00, 0xFA, 0x00, 0xFA, // FM 92 Set_StBandBlend_Bias (1, 250, 250, 250, 250)
0x0B, 0x21, 0x0E, 0x01, 0x00, 0x01, 0x00, 0x02, 0x04, 0xB0, 0x00, 0x03, // AM_Set_CoChannelDet (1, 1, 2, 1200, 3)
0x07, 0x21, 0x17, 0x01, 0x00, 0x01, 0x04, 0xB0, // AM_Set_NoiseBlanker (1, 1, 1200)
0x07, 0x21, 0x18, 0x01, 0x00, 0x01, 0x04, 0xB0, // AM Set_NoiseBlanker_Audio (1, 1, 1200)
0x11, 0x21, 0x26, 0x01, 0x00, 0x00, 0xFF, 0xF6, 0xFF, 0xEC, 0xFF, 0xE2, 0xFF, 0xD8, 0xFF, 0xCE, 0xFF, 0xC4, // AM_Set_LevelStep (1, 0, -10, -20, -30, -40, -50, -60)
0x05, 0x21, 0x27, 0x01, 0xFE, 0xD4, // AM_Set_LevelOffset (1, -300)
0x0B, 0x21, 0x28, 0x01, 0x01, 0xF4, 0x0F, 0xA0, 0x00, 0x64, 0x01, 0xF4, // AM_Set_Softmute_Time (1, 500, 4000, 100, 500)
0x09, 0x21, 0x2A, 0x01, 0x00, 0x01, 0x01, 0x54, 0x01, 0x2C, // AM Set_Softmute_Level (1, 1, 340, 300)
0x07, 0x21, 0x2D, 0x01, 0x00, 0x01, 0x01, 0x4A, // AM_Set_Softmute_Max (1, 1, 330)
0x0B, 0x21, 0x32, 0x01, 0x01, 0xF4, 0x0F, 0xA0, 0x00, 0x64, 0x01, 0xF4, // AM_Set_Highcut_Time (1, 500, 4000, 100, 500)
0x07, 0x21, 0x37, 0x01, 0x00, 0x01, 0x05, 0xDC, // AM_Set_Highcut_Max (1, 1, 1500)
0x07, 0x21, 0x38, 0x01, 0x00, 0x01, 0x0B, 0xB8, // AM_Set_Highcut_Min (1, 1, 3000)
0x07, 0x21, 0x39, 0x01, 0x00, 0x01, 0x01, 0x2C, // AM_Set_Lowcut_Max (1, 1, 300)
0x07, 0x21, 0x3A, 0x01, 0x00, 0x01, 0x00, 0x1E, // AM_Set_Lowcut_Min (1, 1, 30)
0x07, 0x30, 0x0D, 0x01, 0x00, 0x80, 0x00, 0xE0, // Audio Output Source DAC L/R
0x00
};
static const uint8_t INIT_SET4[] PROGMEM =
{
0x07, 0x20, 0x17, 0x01, 0x00, 0x01, 0x03, 0xE8, // FM 23 Set_NoiseBlanker (1, 1, 1000)
0x09, 0x20, 0x18, 0x01, 0x00, 0xD2, 0x00, 0xD2, 0x00, 0xFA, // FM 24 Set_NoiseBlanker_Options (1, 210, 210, 250)
0x05, 0x20, 0x27, 0x01, 0x00, 0x00, // FM 39 Set_LevelOffset (1, 0)
0x0B, 0x20, 0x28, 0x01, 0x00, 0x78, 0x01, 0xF4, 0x00, 0x0A, 0x00, 0x14, // FM 40 Set_Softmute_Time (1, 120, 500, 10, 20)
0x09, 0x20, 0x2A, 0x01, 0x00, 0x02, 0x00, 0x96, 0x00, 0xDC, // FM 42 Set_Softmute_Level (1, 2, 150, 220)
0x09, 0x20, 0x2B, 0x01, 0x00, 0x00, 0x00, 0xc8, 0x03, 0xE8, // FM 43 Set_Softmute_Noise (1, 0, 500, 1000)
0x09, 0x20, 0x2C, 0x01, 0x00, 0x00, 0x00, 0xc8, 0x03, 0xE8, // FM 44 Set_Softmute_Mph (1, 0, 500, 1000)
0x07, 0x20, 0x2D, 0x01, 0x00, 0x01, 0x00, 0xF0, // FM 45 Set_Softmute_Max (1, 1, 200)
0x0B, 0x20, 0x32, 0x01, 0x00, 0xC8, 0x07, 0xd0, 0x00, 0x0A, 0x00, 0x50, // FM 50 Set_Highcut_Time (1, 200, 500, 10, 80)
0x0B, 0x20, 0x33, 0x01, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x82, 0x01, 0xF4, // FM 51 Set_Highcut_ Mod (1, 0, 250, 130, 500)
0x09, 0x20, 0x34, 0x01, 0x00, 0x03, 0x01, 0x68, 0x01, 0x2C, // FM 52 Set_Highcut_Level (1, 3, 360, 300)
0x09, 0x20, 0x35, 0x01, 0x00, 0x03, 0x00, 0x96, 0x00, 0xC8, // FM 53 Set_Highcut_Noise (1, 3, 150, 200)
0x09, 0x20, 0x36, 0x01, 0x00, 0x03, 0x00, 0x78, 0x00, 0x0A, // FM 54 Set_HighCut_Mph (1, 3, 120, 160)
0x07, 0x20, 0x37, 0x01, 0x00, 0x01, 0x09, 0x60, // FM 55 Set_HighCut_Max (1, 1, 2400)
0x07, 0x20, 0x38, 0x01, 0x00, 0x00, 0x27, 0x10, // FM 56 Set_Highcut_Min (1, 0, 10000)
0x07, 0x20, 0x39, 0x01, 0x00, 0x01, 0x00, 0x64, // FM 57 Set_Lowcut_Max (1, 1, 100)
0x07, 0x20, 0x3A, 0x01, 0x00, 0x00, 0x00, 0x14, // FM 58 Set_Lowcut_Min (1, 0, 20)
0x05, 0x20, 0x3B, 0x01, 0x00, 0x01, // FM 59 Set_Highcut_Options (1, 1)
0x0B, 0x20, 0x3C, 0x01, 0x00, 0xC8, 0x0F, 0xA0, 0x00, 0x14, 0x00, 0x50, // FM 60 Set_Stereo_Time (1, 200, 4000, 20, 80)
0x0B, 0x20, 0x3D, 0x01, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x5A, 0x01, 0xF4, // FM 61 Set_Stereo_Mod (1, 0, 210, 90, 500)
0x09, 0x20, 0x3E, 0x01, 0x00, 0x03, 0x01, 0xCC, 0x00, 0xF0, // FM 62 Set_Stereo_Level (1, 3, 460, 240)
0x09, 0x20, 0x3F, 0x01, 0x00, 0x03, 0x00, 0x78, 0x00, 0xA0, // FM 63 Set_Stereo_Noise (1, 3, 120, 160)
0x09, 0x20, 0x40, 0x01, 0x00, 0x03, 0x00, 0x64, 0x00, 0x96, // FM 64 Set_Stereo_Mph (1, 3, 100, 150)
0x05, 0x20, 0x41, 0x01, 0x00, 0x01, // FM 65 Set_Stereo_Max (1, 1)
0x07, 0x20, 0x42, 0x01, 0x00, 0x00, 0x01, 0x90, // FM 66 Set_Stereo_Min (1, 0, 400)
0x0B, 0x20, 0x46, 0x01, 0x01, 0xF4, 0x07, 0xD0, 0x00, 0x14, 0x00, 0x14, // FM 70 Set_StHiBlend_Time (1, 500, 2000, 20, 20)
0x0B, 0x20, 0x47, 0x01, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x78, 0x02, 0x9E, // FM 71 Set_StHiBlend_Mod (1, 0, 240, 120, 670)
0x09, 0x20, 0x48, 0x01, 0x00, 0x03, 0x02, 0x58, 0x00, 0xF0, // FM 72 Set_StHiBlend_Level (1, 3, 600, 240)
0x09, 0x20, 0x49, 0x01, 0x00, 0x03, 0x00, 0x50, 0x00, 0x8C, // FM 73 Set_StHiBlend_Noise (1, 3, 80, 140)
0x09, 0x20, 0x4A, 0x01, 0x00, 0x03, 0x00, 0x50, 0x00, 0x8C, // FM 74 Set_StHiBlend_Mph (1, 3, 80, 140)
0x07, 0x20, 0x4B, 0x01, 0x00, 0x01, 0x0F, 0xA0, // FM 75 Set_StHiBlend_Max (1, 1, 4000)
0x07, 0x20, 0x4C, 0x01, 0x00, 0x01, 0x1B, 0x58, // FM 76 Set_StHiBlend_Min (1, 1, 7000)
0x05, 0x20, 0x50, 0x01, 0x00, 0x01, // FM_Set_Scaler (1, 1)
0x05, 0x20, 0x56, 0x01, 0x03, 0x84, // FM 86 Set_Bandwidth_Options (1, 900)
0x0B, 0x21, 0x0E, 0x01, 0x00, 0x01, 0x00, 0x02, 0x04, 0xB0, 0x00, 0x03, // AM_Set_CoChannelDet (1, 1, 2, 1200, 3)
0x07, 0x21, 0x17, 0x01, 0x00, 0x01, 0x04, 0xB0, // AM_Set_NoiseBlanker (1, 1, 1200)
0x07, 0x21, 0x18, 0x01, 0x00, 0x01, 0x04, 0xB0, // AM Set_NoiseBlanker_Audio (1, 1, 1200)
0x11, 0x21, 0x26, 0x01, 0x00, 0x00, 0xFF, 0xF6, 0xFF, 0xEC, 0xFF, 0xE2, 0xFF, 0xD8, 0xFF, 0xCE, 0xFF, 0xC4, // AM_Set_LevelStep (1, 0, -10, -20, -30, -40, -50, -60)
0x05, 0x21, 0x27, 0x01, 0xFE, 0xD4, // AM_Set_LevelOffset (1, -300)
0x0B, 0x21, 0x28, 0x01, 0x01, 0xF4, 0x0F, 0xA0, 0x00, 0x64, 0x01, 0xF4, // AM_Set_Softmute_Time (1, 500, 4000, 100, 500)
0x09, 0x21, 0x2A, 0x01, 0x00, 0x01, 0x01, 0x54, 0x01, 0x2C, // AM Set_Softmute_Level (1, 1, 340, 300)
0x07, 0x21, 0x2D, 0x01, 0x00, 0x01, 0x01, 0x4A, // AM_Set_Softmute_Max (1, 1, 330)
0x0B, 0x21, 0x32, 0x01, 0x01, 0xF4, 0x0F, 0xA0, 0x00, 0x64, 0x01, 0xF4, // AM_Set_Highcut_Time (1, 500, 4000, 100, 500)
0x07, 0x21, 0x37, 0x01, 0x00, 0x01, 0x05, 0xDC, // AM_Set_Highcut_Max (1, 1, 1500)
0x07, 0x21, 0x38, 0x01, 0x00, 0x01, 0x0B, 0xB8, // AM_Set_Highcut_Min (1, 1, 3000)
0x07, 0x21, 0x39, 0x01, 0x00, 0x01, 0x01, 0x2C, // AM_Set_Lowcut_Max (1, 1, 300)
0x07, 0x21, 0x3A, 0x01, 0x00, 0x01, 0x00, 0x1E, // AM_Set_Lowcut_Min (1, 1, 30)
0x07, 0x30, 0x0D, 0x01, 0x00, 0x80, 0x00, 0xE0, // Audio Output Source DAC L/R
0x00
};
const uint8_t AMFilterMap[] PROGMEM = { 30, 40, 60, 80, 30, 40, 60, 80, 30, 40, 60, 80, 30, 40, 60, 80 };
const uint16_t FMFilterMap[] PROGMEM = { 560, 640, 720, 840, 970, 1140, 1330, 1510, 1680, 1840, 2000, 2170, 2360, 2540, 2870, 3110 };
void Write(uint8_t *buf, uint8_t len)
{
Wire.beginTransmission(DSP_I2C);
for (int i = 0; i < len; i++)
Wire.write(*buf++);
Wire.endTransmission();
}
void Read(uint8_t *buf, uint8_t len)
{
uint8_t lenrec = Wire.requestFrom(DSP_I2C, len);
for (int i = 0; i < lenrec; i++)
*buf++ = Wire.read();
}
void Set_Cmd(uint8_t mdl, uint8_t cmd, int len, ...)
{
uint8_t buf[31];
uint16_t temp;
va_list vArgs;
va_start(vArgs, len);
buf[0] = mdl;
buf[1] = cmd;
buf[2] = 1;
for (uint8_t i = 0; i < len; i++)
{
temp = va_arg(vArgs, uint16_t);
buf[3 + i * 2] = (uint8_t)(temp >> 8);
buf[4 + i * 2] = (uint8_t)temp;
}
va_end(vArgs);
Write(buf, len * 2 + 3);
}
void Get_Cmd(uint8_t mdl, uint8_t cmd, int16_t *receive, int len)
{
uint8_t buf[3];
buf[0] = mdl;
buf[1] = cmd;
buf[2] = 1;
Write(buf, 3);
Read((uint8_t*)receive, 2 * len);
for (uint8_t i = 0; i < len; i++)
{
uint16_t newval = (uint8_t)(receive[i] >> 8) | (((uint8_t)(receive[i])) << 8);
receive[i] = newval;
}
}
void dsp_write_data(const uint8_t* data)
{
uint8_t *pa = (uint8_t *)data;
uint8_t len, i, first;
for (;;)
{
len = pgm_read_byte_near(pa++);
first = pgm_read_byte_near(pa);
if (!len)
break;
if (len == 2 && first == 0xff)
{
int delaytime = pgm_read_byte_near(++pa);
delay(delaytime);
pa++;
}
else
{
Wire.beginTransmission(DSP_I2C);
for (int i = 0; i < len; i++)
Wire.write(pgm_read_byte_near(pa++));
Wire.endTransmission();
}
}
}
void scan(bool continous)
{
uint32_t freq;
uint32_t buffer;
if ( scan_start < 6500 )
{
scan_mode = 1;
scan_start = AM_start_scan;
scan_end = AM_scan_end;
scan_step = AM_scan_step;
}
else
{
scan_mode = 0;
}
if (scan_mode == 0)
{
Set_Cmd(32, 1, 2, 1, scan_start);
}
else
{
Set_Cmd(33, 10, 2, scan_filter == -1 ? 1 : 0, pgm_read_byte_near(AMFilterMap + scan_filter));
Set_Cmd(33, 1, 2, 1, scan_start);
}
do
{
Serial.print('U');
for (freq = scan_start; freq <= scan_end; freq += scan_step)
{
Set_Cmd( scan_mode == 0 ? 32 : 33, 1, 2, 1, freq);
Serial.print(scan_mode == 0 ? freq * 10 : freq, DEC);
Serial.print('=');
delay(10);
int16_t uQuality[4] = { 0 };
Get_Cmd(scan_mode == 0 ? 32 : 33, 128, uQuality, 4);
Serial.print(uQuality[1] / 10, DEC);
Serial.print(',');
}
Serial.print('\n');
} while (continous && !Serial.available());
if (radio_mode == 0)
{
Set_Cmd( 32, 1, 2, 1, REG_FREQ / 10 );
}
else
{
Set_Cmd( 33, 10, 2, 0, pgm_read_byte_near(AMFilterMap + current_filter));
Set_Cmd( 33, 1, 2, 1, REG_FREQ );
}
}
void get_RDS()
{
int16_t uRDS_RDS[8] = {0};
Get_Cmd(32, 131, uRDS_RDS, 8);
if ( bitRead(uRDS_RDS[0], 15) == 1 )
{
Serial.print('P');
serial_hex(uRDS_RDS[1] >> 8);
serial_hex(uRDS_RDS[1]);
Serial.print('\n');
Serial.print('R');
serial_hex(uRDS_RDS[2] >> 8);
serial_hex(uRDS_RDS[2]);
serial_hex(uRDS_RDS[3] >> 8);
serial_hex(uRDS_RDS[3]);
serial_hex(uRDS_RDS[4] >> 8);
serial_hex(uRDS_RDS[4]);
serial_hex(uRDS_RDS[5] >> 8);
Serial.print('\n');
}
}
void serial_hex(uint8_t val)
{
Serial.print((val >> 4) & 0xF, HEX);
Serial.print(val & 0xF, HEX);
}
void Set_AGC_tresshold(uint8_t val)
{
if (val == 0) {
Set_Cmd(32, 11, 2, 920, 0);
Set_Cmd(33, 11, 1, 1020);
} else if (val == 1) {
Set_Cmd(32, 11, 2, 890, 0);
Set_Cmd(33, 11, 1, 990);
} else if (val == 2) {
Set_Cmd(32, 11, 2, 870, 0);
Set_Cmd(33, 11, 1, 970);
} else {
Set_Cmd(32, 11, 2, 840, 0);
Set_Cmd(33, 11, 1, 940);
}
}
void Set_IF_RF(uint8_t val, uint8_t val1)
{
if (val == 1 && val1 == 0) {
Set_Cmd(32, 39, 1, 60);
Set_Cmd(33, 39, 1, 60);
} else if (val == 0 && val1 == 1) {
Set_Cmd(32, 39, 1, 90);
Set_Cmd(33, 39, 1, 60);
} else if (val == 1 && val1 == 1) {
Set_Cmd(32, 39, 1, 150);
Set_Cmd(33, 39, 1, 120);
} else {
Set_Cmd(32, 39, 1, 0);
Set_Cmd(33, 39, 1, 0);
}
}
void Set_Deempasis(uint8_t val)
{
if (val == 0) {
Set_Cmd(32, 31, 1, 500); //50 us
Set_Cmd(32, 85, 1, 0);
} else if (val == 1) {
Set_Cmd(32, 31, 1, 750); //75 us
Set_Cmd(32, 85, 1, 0);
} else if (val == 2) {
Set_Cmd(32, 31, 1, 0); //0 us
Set_Cmd(32, 85, 1, 0);
} else if (val == 3) {
Set_Cmd(32, 85, 1, 1); //MPX out mode ( DAC_Left : FM MPX (DARC) signal / DAC_Right : mono audio );
}
}
void setup()
{
Wire.begin();
Serial.begin(115200);
delay(40);
int16_t uState;
Get_Cmd(64, 128, &uState, 1);
if (uState < 2)
dsp_write_data(DSP_INIT);
else if (uState > 2)
{
Set_Cmd(64, 1, 1, 1);
}
while (true)
{
if (Serial.available() > 0)
{
if (Serial.read() == 'x')
{
while (!Serial.available());
if (Serial.read() == '\n')
break;
}
}
}
delay(20);
while (Serial.available() > 0)
Serial.read(); // clear the serial buffer
Serial.print("\nOK\n");
if (AM_VOL_SCALE != -1) {
int SetVolScale = map(AM_VOL_SCALE, 0, 100, -120, 60);
Set_Cmd(33, 80, 1, SetVolScale);
}
}
void loop()
{
// check signal level and 19kHz subcarrier every TIMER_INTERVAL
if ((millis() - timer) >= TIMER_INTERVAL)
{
if (radio_mode == 0) {
Serial.print('S');
uint16_t uStatus;
Get_Cmd(32, 133, &uStatus, 1);
char stereo ;
if(!forced_mono)
stereo = (uStatus & (1 << 15)) ? 's' : 'm';
else
stereo = (uStatus & (1 << 15)) ? 'S' : 'M';
Serial.print(stereo);
int16_t uQuality[4] = { 0 };
if (radio_mode == 0){
Get_Cmd(32, 128, uQuality, 6);}
if (uQuality[1] > 1200){uQuality[1] = 1200;}
Serial.print(uQuality[1] / 10, DEC);
Serial.print(',');
if ((uQuality[2] > 1000) && (radio_mode ==0)) {uQuality[2] = 1000;}
Serial.print(uQuality[2] / 10, DEC);
Serial.print(',');
Serial.print(uQuality[3] / 10, DEC);
Serial.print('\n');
timer = millis();
}
else if (radio_mode == 1) {
Serial.print("Sm");
int16_t uQuality[4] = { 0 };
Get_Cmd(33, 128, uQuality, 4);
Serial.print(uQuality[1] / 10, DEC);
Serial.print(',');
if (radio_mode ==1){uQuality[2] = uQuality[2] / 5;}
Serial.print(uQuality[2] / 10, DEC);
Serial.print(',');
Serial.print(uQuality[3] / 10, DEC);
Serial.print('\n');
timer = millis();
}
}
if (radio_mode == 0) {
if ((millis() - timer_RDS) >= RDS_TIMER_INTERVAL)
{
get_RDS();
timer_RDS = millis();
}
}
if (Serial.available() > 0)
{
buff[buff_pos] = Serial.read();
if (buff[buff_pos] != '\n' && buff_pos != SERIAL_BUFFER_SIZE - 1)
buff_pos++;
else {
buff[buff_pos] = 0x00;
buff_pos = 0;
switch (buff[0])
{
case 'x':
Serial.println("OK");
break;
case 'Y': // Audio volume scaler
volume = atoi(buff + 1);
if (volume == 0) {
Set_Cmd(48, 11, 1, 1); //mute
} else {
Set_Cmd(48, 11, 1, 0); //unmute
int Setvolume = map(volume, 0, 100, -599, 50);
Set_Cmd(48, 10, 1, Setvolume);
}
Serial.print("Y");
Serial.println(volume);
break;
case 'S':
if (buff[1] == 'a')
{
scan_start = (atol(buff + 2) + 5) / 10;
AM_start_scan = atol(buff + 2);
}
else if (buff[1] == 'b')
{
scan_end = (atol(buff + 2) + 5) / 10;
AM_scan_end = atol(buff + 2);
}
else if (buff[1] == 'c')
{
scan_step = (atol(buff + 2) + 5) / 10;
AM_scan_step = atol(buff + 2);
}
else if (buff[1] == 'f')
{
scan_filter = atol(buff + 2);
}
else if (scan_start > 0 && scan_end > 0 && scan_step > 0 && scan_filter >= 0)
{
if (buff[1] == 'm')
scan(true); // Multiple (continous) scan
else
scan(false); // Single scan
}
break;
case 'B':
forced_mono = atol(buff + 1);
if(forced_mono == 1)
Set_Cmd(32, 66, 1, 2, forced_mono == 1 ? 2 : 0 , 60);
else
Set_Cmd(32, 66, 1, 0, forced_mono == 1 ? 2 : 0 , 200);
Serial.print('B');
Serial.print(forced_mono ? '1' : '0');
Serial.print('\n');
break;
case 'N':
break;
case 'M':
mode = atol(buff + 1);
if (mode == 0){
if (MODF_FREQ == 0){MODF_FREQ = 87500;}
Set_Cmd(32, 1, 2, 1, MODF_FREQ / 10);
Serial.println("M0");
Serial.print('T');
Serial.println(MODF_FREQ);
if (Filter_AM != 16) {Filter_AM = current_filter;}
if (Filter_FM == 16) {Filter_FM = -1;}
current_filter = Filter_FM;
Set_Cmd(32, 10, 4, current_filter == -1 ? 1 : 0, pgm_read_word_near(FMFilterMap + current_filter), 1000, 1000);
radio_mode = 0;
} else {
if (MODA_FREQ == 0){MODA_FREQ = 558;}
Set_Cmd(33, 1, 2, 1, MODA_FREQ);
Serial.println("M1");
Serial.print('T');
Serial.println(MODA_FREQ);
Filter_FM = current_filter;
if (Filter_FM != 16) {Filter_FM = current_filter;}
if (Filter_AM == 16) {Filter_AM = 1;}
current_filter = Filter_AM;
Set_Cmd(33, 10, 2, 0, pgm_read_byte_near(AMFilterMap + current_filter));
radio_mode = 1;
}
Serial.print('F');
Serial.println(current_filter);
Serial.print('V');
Serial.println(LevelOffset);
break;
case 'T': // Tune to a frequency (to do keep filter settings)
freq = atol(buff + 1);
REG_FREQ = freq;
if ((REG_FREQ >= 65000) && (REG_FREQ <= 108000)) {
Set_Cmd(32, 1, 2, 1, REG_FREQ / 10);
Serial.println("M0");
Serial.print('T');
Serial.println(REG_FREQ);
if (radio_mode == 1) { // from AM to FM then switch to adaptive filter AUTO in TEF-GTK
if (Filter_AM != 16) {Filter_AM = current_filter;}
if (Filter_FM == 16) {Filter_FM = -1;}
current_filter = Filter_FM;
Set_Cmd(32, 10, 4, current_filter == -1 ? 1 : 0, pgm_read_word_near(FMFilterMap + current_filter), 1000, 1000);
}
radio_mode = 0;
MODF_FREQ = REG_FREQ;
} else if ((REG_FREQ >= 144) && (REG_FREQ <= 26999)) {
Set_Cmd(33, 1, 2, 1, REG_FREQ);
Serial.println("M1");
Serial.print('T');
Serial.println(REG_FREQ);
if (radio_mode == 0) { // from FM to AM then use filter 1 -> 4khz
if (Filter_FM != 16) {Filter_FM = current_filter;}
if (Filter_AM == 16) {Filter_AM = 1;}
current_filter = Filter_AM;
Set_Cmd(33, 10, 2, 0, pgm_read_byte_near(AMFilterMap + current_filter));
}
radio_mode = 1;
MODA_FREQ = REG_FREQ;
}
Serial.print('F');
Serial.println(current_filter);
Serial.print('V');
Serial.println(LevelOffset);
break;
case 'F': // Change FIR filters
current_filter = atoi(buff + 1);
if (radio_mode == 0) {
Set_Cmd(32, 10, 4, current_filter == -1 ? 1 : 0, pgm_read_word_near(FMFilterMap + current_filter), 1000, 1000);
}
else {
Set_Cmd(33, 10, 2, 0, pgm_read_byte_near(AMFilterMap + current_filter));
}
Serial.print('F');
Serial.println(buff + 1);
break;
case 'V':
LevelOffset = atoi(buff + 1);
Level = map(LevelOffset, 0, 127, 0, 360);
if (radio_mode == 1) {Set_Cmd(33, 12, 1, Level);} // Set AM LNA (in TEF-GTK enable Show antenna input alignment - NO FM)
else
AudioLevel = atoi(buff + 1);
LevelA = map(AudioLevel, 0, 127, 0, 60);
if (radio_mode == 0) {Set_Cmd(32, 80, 1, LevelA);} // Set +6dB analog radio sound gain (in TEF-GTK enable Show antenna input alignment - NO AM)
Serial.print('V');
Serial.println(buff + 1);
break;
case 'Q': // Audio volume scaler
Squelch = atoi(buff + 1);
if (Squelch != -1 && AM_VOL_SCALE == -1) {
int Setsquelch = map(Squelch, 0, 100, -120, 60);
Set_Cmd(33, 80, 1, Setsquelch);
Serial.print("Q");
Serial.println(Squelch);
}
break;
case 'D': // Change the de-emphasis
nDeemphasis = atoi(buff + 1);
Serial.print("D");
Set_Deempasis(nDeemphasis);
Serial.println(nDeemphasis);
break;
case 'G':
Serial.print('G');
RFplus = buff[1] - 48;
IFplus = buff[2] - 48;
Set_IF_RF(RFplus,IFplus);
Serial.print(RFplus);
Serial.println(IFplus);
break;
case 'A': // AGC (check what levelstepping does)
Serial.print('A');
AGC_tress = atoi(buff + 1);
Set_AGC_tresshold(AGC_tress);
Serial.println(AGC_tress);
break;
case 'C':
Serial.print('C');
if (buff[1] == '0' ) {
Set_Cmd(32, 22, 1, 1); //ChannelEqualizer (EQ 1)
Set_Cmd(32, 20, 1, 1); //MphSuppression (iMS 1)
Serial.print("0");
} else if (buff[1] == '1' ) {
Set_Cmd(32, 22, 1, 0); //ChannelEqualizer (EQ 0)
Serial.print("1");
}else if (buff[1] == '2' ) {
Set_Cmd(32, 20, 1, 0); //MphSuppression (iMS 0)
Serial.print("2");
}
Serial.print('\n');
break;
case 'Z':
Serial.print('Z');
if (buff[1] == '0') {
dsp_write_data(INIT_SET1);
Serial.print("0");
} else if (buff[1] == '1') {
dsp_write_data(INIT_SET2);
Serial.print("1");
} else if (buff[1] == '2') {
dsp_write_data(INIT_SET3);
Serial.print("2");
} else if (buff[1] == '3') {
dsp_write_data(INIT_SET4);
Serial.print("3");
} else {
Serial.print("4");
}
Serial.print('\n');
Set_AGC_tresshold(AGC_tress);
Set_IF_RF(RFplus,IFplus);
Set_Deempasis(nDeemphasis);
break;
case 'X': // shutdown
Set_Cmd(64, 1, 1, 1);
TWCR = 0; // Release SDA and SCL lines used by hardware I2C
Serial.println("X");
delay(10);
asm("jmp 0");
break;
}
}
}
}
使用TEF-GTK进行用户界面控制


浙公网安备 33010602011771号