shubham c
/
ADF_test_clone
Interrupt_test
Fork of ADF_test_2 by
main.cpp
- Committer:
- ee12b079
- Date:
- 2016-12-16
- Revision:
- 22:eeea8501886c
- Parent:
- 21:bae83ef7ac5f
File content as of revision 22:eeea8501886c:
//Working for ISR = 2 28/12/2015 7:02 PM //working for ISR = 10 29/12/2015 10:43 AM /*remove me*/ #define bypass_adf 0 /**/ #define START_ADDRESS 0x020; #define MISO_PIN PTE3 /**************Defining Counter Limits**************/ #define THRS 20 #define STATE_ERR_THRS 20 #define PHY_OFF_EXEC_TIME 300 #define PHY_ON_EXEC_TIME 300 #define PHY_TX_EXEC_TIME 600 /******DEFINING COMMANDS*********/ #define CMD_HW_RESET 0xC8 #define CMD_PHY_ON 0xB1 #define CMD_PHY_OFF 0xB0 #define CMD_PHY_TX 0xB5 #define CMD_CONFIG_DEV 0xBB /**STATES**/ //======================= #define PHY_OFF 0xB1 #define PHY_ON 0xB2 #define PHY_TX 0xB4 #define BUSY 0x00 //=================================================== //without reset feature , with state checks. #include<iostream> #include"mbed.h" #define ADF_IRQ PTA14 #define SPI_MOSI PTE1 #define SPI_MISO PTE3 #define SPI_CLK PTE2 #define SPI_CS_ADF PTA15 /*Rolling_Buffer_Parameters*/ #define TRANSMIT_LEN_1 0xFF #define TRANSMIT_LEN_2 0xFF /***/ Timer T; Serial gPC( USBTX, USBRX ); //gPC.baud(1200); InterruptIn IRQ(ADF_IRQ); //Ticker ticker; SPI spi(PTE1, PTE3, PTE2); DigitalOut sys_pwr_rst (PTA16,0);//For eps DigitalOut gCS_ADF(SPI_CS_ADF); DigitalOut led(LED_RED); DigitalOut RF_SW_CNTRL_BCN(PTB17); DigitalOut RF_SW_CNTRL_TX(PTB7); unsigned int Adf_data_counter=0; unsigned char status =0; unsigned int cmd_err_cnt=0; unsigned int data_length; unsigned int state_err_cnt=0; unsigned int miso_err_cnt=0; unsigned int hw_reset_err_cnt=0; unsigned int counter =0; bool temp_return = 0; bool bcn_flag=0; bool bbram_flag=0; DigitalOut COM_OC_SW(PTB3); bool stop_transmission=false; bool sent_tmfrom_SDcard; bool loop_on; bool ADF_off; bool buffer_state; uint8_t signal = 0x00; //unsigned char bbram_buffer[66]= {0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x10,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00}; unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/0x7F/*PA Parameters*/,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00}; //unsigned char Adf_data[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 unsigned char Adf_data[]= {0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,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,0x0F,0x20,0xE5,0xEE,0x00,0x83,0x96,0x0C,0x2A,0xE6,0xED,0xA8,0x1E,0x58,0x80,0x30,0x60,0xCB,0xD2,0xF5,0x54,0xC9,0xF1,0x37,0x0A,0x24,0x71,0xD0,0xBC,0x51,0x70,0x93,0x12,0x43,0x84,0xE4,0x5E,0x2E,0xAA,0xCE,0x64,0x18,0x82,0x3B,0x1C,0xBB,0x23,0xC9,0x04,0x73,0xDA,0x81,0xFA,0xA1,0xF6,0xDE,0xDA,0x9A,0x7B,0xDA,0x52,0x2D,0x00,0xEB,0xCC,0x3D,0xA3,0xB0,0x42,0xAF,0x4F,0x12,0xF8,0x66,0x4B,0x53,0x6C,0x7F,0x04,0xB2,0xF0,0xAF,0xC9,0xD9,0x68,0xDE,0x11,0xEA,0x04,0x08,0x74,0xFE,0xC6,0x06,0x14,0xEF,0x08,0xD1,0xE9,0xBF,0x1E,0x53,0xCB,0xF9,0xD6,0xED,0x03,0x64,0x26,0xB0,0xD4,0x50,0xF4,0x3D,0xB2,0xD3,0x74,0x8C,0x97,0x96,0x2E,0x68,0x04,0x94,0xD0,0xAF,0x7B,0xC0,0x7E,0xA9,0xC6,0x32,0x94,0x80,0xC8,0x67,0x5E,0x20,0x5E,0x7F,0x8A,0x07,0x6A,0x1F,0x5C,0xCD,0xBB,0xAF,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x40,0xDF,0x23,0xA8,0x4B,0x37,0x90,0x62,0x9E,0xB2,0x67,0xB4,0xE2,0xEA,0x3B,0xAC,0xFC,0xF2,0x5D,0x84,0x27,0xCB,0x49,0x9A,0x5F,0xCC,0x7D,0x78,0x26,0x3B,0x7D,0xF0,0xC9,0x34,0xB2,0x02,0x83,0x08,0x1A,0x98,0x62,0x61,0xFA,0xC0,0xAF,0x0A,0x20,0x38,0xA2,0x60,0x9A,0x86,0xF4,0x37,0xBB,0xAA,0xE7,0x36,0x78,0xAC,0xDD,0xC8,0x02,0xFA,0x63,0x69,0x93,0x66,0xC3,0x09,0xF9,0xEE,0x7B,0x4B,0x2D,0x30,0xC6,0x48,0xA7,0xA8,0x42,0x26,0x0D,0xFC,0xD1,0x9B,0x90,0x7C,0xB6,0x74,0x61,0x14,0x76,0xEE,0xC2,0x60,0x58,0x36,0x86,0xAC,0xCA,0x4C,0x27,0x64,0x33,0x38,0x3F,0x34,0xB1,0xE2,0xC2,0x68,0xC3,0x1A,0x1D,0x2C,0x4D,0x47,0xFB,0x54,0x46,0xCF,0xFF,0x64,0xBC,0x3B,0x59,0x6C,0x28,0x53,0xAC,0xD8,0x8E,0x1E,0x2D,0x30,0x0D,0xE4,0x74,0x58,0xAC,0xE5,0x21,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x25,0xA2,0xD6,0xC2,0x28,0x99,0x86,0xE0,0xF5,0xE2,0x2E,0x60,0xA1,0x25,0x87,0x22,0xF1,0x93,0x13,0x48,0x5E,0x0E,0xB4,0x9C,0x65,0x0B,0xA9,0x4A,0x32,0x2D,0x50,0x5E,0xA1,0x8B,0xA9,0xB6,0x99,0x0D,0xC4,0xB4,0x47,0x07,0xEE,0x54,0x89,0x4E,0xF3,0x76,0x8B,0x5B,0xF5,0x8A,0xF0,0x67,0x45,0xE2,0xE7,0xA0,0xA4,0xCE,0xE5,0xD7,0x82,0xB0,0xAE,0xCB,0xF9,0x5C,0x73,0xF8,0x36,0x6C,0x92,0x02,0x32,0xC2,0xE5,0x47,0x37,0x90,0x02,0x56,0x16,0xFC,0xA0,0x74,0xEF,0xBA,0x87,0x1C,0x97,0x8E,0x66,0xC7,0xA3,0xA2,0x87,0xB7,0xA3,0x66,0x3A,0x89,0xDA,0xB4,0x82,0xD9,0xF4,0xE8,0x55,0x43,0x2A,0xE8,0xD1,0x4A,0x01,0x14,0x10,0xC1,0x0C,0x7E,0x52,0xEA,0x88,0xF6,0xDA,0x2B,0x93,0x92,0x62,0x2D,0xDF,0x30,0x09,0xF0,0x05,0xE8,0x63,0xFB,0xE1,0x8C,0x94,0x67,0x64,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x96,0xDF,0x8B,0xE0,0x90,0x80,0x3B,0xD8,0xC7,0x29,0xF7,0xE6,0x53,0x45,0x18,0x20,0xF2,0x8C,0x8D,0x6A,0xAA,0xE9,0xCC,0x98,0x4C,0x4B,0x9B,0xAC,0x81,0x7C,0x2D,0x16,0x48,0x6C,0x43,0xA8,0xA3,0xB1,0xFD,0x76,0x74,0xE6,0xD9,0x36,0x4E,0x44,0x22,0x6C,0x33,0x02,0xD5,0xA6,0xD6,0x91,0x23,0xDC,0x31,0x7B,0xCB,0xA6,0x18,0x19,0x8C,0xFA,0xA6,0x35,0xFC,0x2E,0x01,0xD5,0x7E,0x9C,0xC6,0xC6,0xB3,0x02,0xBD,0xBB,0x5C,0x0C,0xCE,0x52,0x56,0xD4,0x53,0x2B,0x63,0x78,0x05,0x40,0x2C,0xAA,0x25,0x63,0xF0,0xBC,0x94,0x2E,0x3C,0xF2,0x45,0x67,0x98,0x32,0xC7,0xFE,0x9C,0x36,0x7E,0xC6,0x00,0x18,0x4D,0x9C,0x69,0x30,0xA6,0x56,0x0C,0xE4,0xE6,0x08,0x92,0x4C,0x09,0x2E,0x23,0x6E,0x29,0x43,0xED,0x5A,0x2D,0x58,0xB2,0xFE,0xC7,0x18,0xCB,0x90,0x17,0x3D,0x24,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x32,0x56,0x28,0x64,0x22,0x8E,0xEC,0xB0,0xEB,0x21,0xBD,0x5A,0xCD,0x3A,0x7D,0xA8,0xAD,0xA9,0x84,0x92,0x5E,0x0F,0x77,0xA8,0x89,0x42,0xCF,0xC4,0x9D,0xF8,0xA3,0x2E,0xF0,0xF6,0x94,0xC2,0x09,0xFF,0x66,0xE8,0x41,0x8B,0xA6,0xE8,0x40,0x2B,0x4A,0xB4,0x75,0x3E,0xE6,0x92,0xAA,0x1D,0x84,0xAC,0x9C,0x20,0x8E,0xB0,0xB5,0xD0,0xC4,0xC8,0x35,0x95,0x06,0xAA,0x65,0xA9,0xD6,0x16,0x4C,0x94,0x3C,0x0C,0x4E,0x9C,0xDC,0xE6,0xA1,0x59,0x8C,0x60,0xB2,0xAB,0x10,0x30,0x44,0x4E,0x98,0xF8,0xE5,0xDA,0xB4,0xFA,0x6C,0x7E,0xB1,0xCA,0x97,0xC9,0xA9,0x08,0x88,0x66,0xC4,0x76,0x10,0xF5,0x1D,0x9E,0xF0,0x58,0x00,0xCE,0xE2,0x68,0x5D,0xD8,0x49,0xA1,0xD8,0xA6,0x07,0xC2,0x99,0x14,0xD2,0x23,0x2F,0xB2,0x80,0x98,0xF2,0x86,0xE6,0x60,0x62,0x18,0x07,0x19,0x11,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x75,0xB4,0xD8,0xF8,0x02,0x87,0x27,0xBA,0x44,0x67,0x4F,0xB8,0x1C,0x6E,0xEA,0x4A,0xA2,0x9F,0x5C,0x40,0xDC,0x33,0x09,0x54,0x45,0x62,0x2D,0x12,0xE1,0x3A,0x1A,0xC8,0xBF,0x14,0x18,0xDA,0x33,0xB4,0x7C,0x80,0x7A,0xAC,0x98,0x90,0x04,0xE0,0x01,0xFE,0x39,0xB6,0xCE,0xA0,0x63,0x98,0x01,0x36,0x15,0x76,0x78,0x8E,0xC1,0x80,0x65,0xE4,0x7D,0x66,0x58,0xF2,0xD9,0xE6,0x8B,0x78,0x74,0xB2,0x61,0xC4,0x01,0x76,0xD9,0xE0,0xBD,0x1C,0x1A,0x82,0x2F,0x66,0x89,0xC6,0xD8,0x3F,0xA4,0xE0,0x1C,0x81,0x49,0xB4,0x6A,0xCB,0x02,0xE8,0xAA,0x1E,0xB6,0xE0,0xFD,0xF3,0x90,0x6E,0x15,0xA5,0x07,0x84,0x79,0xAE,0xFF,0x6A,0x60,0x6D,0xB7,0x1C,0xA7,0x43,0x6A,0xFA,0x4D,0xBE,0x5E,0x4A,0xAF,0x36,0x4D,0x3C,0xA4,0xAB,0x6B,0x20,0x15,0x2C,0xA5,0x84,0x95,0x62,0xA2,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0x88,0xEC,0x1E,0xC9,0xE5,0xCC,0x1C,0xED,0x52,0xC0,0x54,0x7F,0xD5,0x0F,0x88,0x1A,0x0C,0x45,0x74,0x76,0xEF,0xD2,0x0C,0x9A,0x88,0x65,0x06,0xB0,0x14,0xE1,0x7A,0x64,0xEA,0xF9,0x82,0xCF,0xD6,0xF6,0x7A,0xE5,0xC8,0xBB,0xB2,0xFF,0xC2,0x3A,0xE6,0x34,0x99,0x01,0x42,0x69,0x4C,0x35,0x70,0xC6,0x0D,0x06,0xB6,0xF2,0x16,0xCE,0x40,0xD7,0x47,0x29,0x80,0x71,0x2D,0x1B,0x6A,0xD5,0xAA,0x16,0x60,0xB7,0xA6,0x8D,0x72,0xB7,0xC7,0x00,0xD0,0x1A,0xE9,0xC5,0x42,0x8F,0x3B,0x65,0x78,0xA8,0x60,0xA0,0x54,0x66,0xCD,0xFC,0xF4,0x4F,0xFD,0x26,0xC4,0x29,0x8B,0xC1,0xE8,0xB8,0x98,0x06,0x34,0x6D,0x64,0x83,0x5E,0x27,0x6C,0xDB,0x84,0xBC,0x5B,0x8C,0xE6,0x90,0x12,0x2D,0xB8,0x22,0x6B,0x0A,0x3E,0x62,0xFC,0xD9,0x82,0x50,0xAB,0x3F,0x58,0x78,0xE4,0xA5,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x5D,0x9D,0x8D,0x0C,0x0C,0x50,0x2C,0x0E,0x4E,0x68,0x0E,0x5A,0x3C,0xA4,0x33,0x94,0x73,0x11,0xC8,0x6A,0x0E,0x11,0xFF,0x58,0x22,0x67,0x95,0x1C,0x33,0x51,0x83,0x14,0xC5,0x28,0xF9,0xAC,0xF9,0x37,0x36,0x4C,0x8B,0x20,0x59,0xCE,0x10,0xB2,0xF7,0xE8,0x59,0x3C,0xD4,0xFC,0x59,0x65,0xC0,0xB8,0x22,0x06,0xEE,0xD2,0x18,0x1B,0x43,0xA4,0x1C,0x91,0xA1,0x98,0x4B,0x06,0xA3,0xBE,0x2B,0x6D,0x1A,0xF0,0xD7,0x0D,0x3B,0x24,0xEA,0x74,0x9D,0x82,0xC5,0xCA,0x71,0x0A,0xB0,0x4B,0xEE,0x1A,0x00,0x49,0x67,0xA0,0x93,0x97,0x66,0x32,0x49,0x32,0x2C,0xA8,0xF9,0xAE,0xA7,0xBE,0xE3,0xD8,0x7F,0x48,0x81,0x8B,0x5C,0xF6,0xC4,0x45,0x16,0x52,0xDC,0x6E,0x99,0xB2,0x5D,0x7B,0xC7,0xE8,0x42,0x62,0xAF,0x7A,0x26,0xFA,0x5F,0xEC,0xF9,0x4C,0x60,0x32,0xB9,0x73,0x98,0x5E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xEE,0x34,0x3B,0xE4,0xEA,0x19,0xB2,0xC0,0xBA,0x24,0x95,0x08,0x7C,0x60,0xFB,0x44,0x66,0x1A,0x98,0x6A,0x1F,0x4E,0xA1,0x9C,0x56,0x50,0x67,0xC8,0x09,0x04,0x89,0xAC,0x43,0x9E,0x9C,0x36,0x0B,0x99,0x11,0xF4,0xAD,0x16,0x0A,0xF0,0x61,0xD2,0x3E,0xDE,0xB0,0x12,0xD0,0xF6,0x2E,0xCA,0xF6,0x6A,0x4B,0x31,0xF3,0xD6,0x02,0xF8,0xD6,0x40,0x80,0xA0,0xED,0x40,0x52,0x56,0x7D,0x7C,0xEE,0xD6,0x5C,0xBC,0xC7,0x49,0x80,0x6E,0xB6,0x1B,0x55,0x4A,0x44,0x4D,0x14,0x6A,0x62,0x6C,0x13,0xB8,0x21,0x3E,0x42,0xA4,0xEF,0x7B,0xF2,0x82,0x2E,0xB3,0xA4,0x22,0x16,0xE1,0xBB,0x9E,0xF6,0x24,0x92,0x1C,0x45,0xA5,0x37,0x3C,0x6F,0x57,0x7D,0xA4,0xBB,0x5E,0xA8,0xDE,0x85,0xFB,0xD1,0x42,0xE6,0x2A,0x5F,0x74,0x2F,0x3D,0x04,0x2A,0x41,0x78,0xD6,0xE6,0x93,0x9E,0x75,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x36,0xAF,0xB0,0x2C,0x4F,0x28,0x9E,0x6A,0x44,0xEC,0xB9,0x42,0x0D,0xEB,0x01,0xE2,0xB4,0x9C,0x1C,0xD6,0x85,0xDE,0x37,0x12,0x92,0x2A,0xB0,0x34,0x5F,0x81,0x2E,0xD8,0x1B,0x7B,0xDA,0x5E,0x49,0xA1,0x59,0x18,0x1F,0xC5,0xE3,0x60,0x5A,0x4D,0x06,0xB8,0xD2,0x03,0x6F,0x74,0xB8,0x7E,0x53,0x56,0xBB,0xC0,0x60,0xD8,0xF2,0x0C,0x2B,0x38,0xE7,0x68,0xA7,0x6A,0x86,0x3C,0x2D,0x38,0x13,0xB0,0xBA,0xF4,0xB2,0xEE,0xCB,0xC8,0x23,0x8C,0x23,0x3E,0x4F,0x25,0x29,0xBA,0xFF,0x65,0xB3,0x16,0x00,0xA9,0x4C,0x04,0x3D,0xB3,0x8A,0xF8,0x32,0xE0,0x5B,0x4A,0x5C,0x79,0xE0,0x66,0x70,0xD4,0x81,0x0E,0x7E,0x13,0x31,0x36,0x73,0xD9,0x1D,0x28,0xC9,0x60,0x5D,0x04,0x26,0x26,0x28,0x0C,0x73,0xF3,0x6B,0x60,0xBB,0x07,0x57,0xEE,0xAB,0x11,0x33,0xFE,0x4E,0xF6,0x79,0xDA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x83,0x96,0x0C,0x2A,0xE6,0xED,0xA8,0x1E,0x58,0x80,0x30,0x60,0xCB,0xD2,0xF5,0x54,0xC9,0xF1,0x37,0x0A,0x24,0x71,0xD0,0xBC,0x51,0x70,0x93,0x12,0x43,0x84,0xE4,0x5E,0x2E,0xAA,0xCE,0x64,0x18,0x82,0x3B,0x1C,0xBB,0x23,0xC9,0x04,0x73,0xDA,0x81,0xFA,0xA1,0xF6,0xDE,0xDA,0x9A,0x7B,0xDA,0x52,0x2D,0x00,0xEB,0xCC,0x3D,0xA3,0xB0,0x42,0xAF,0x4F,0x12,0xF8,0x66,0x4B,0x53,0x6C,0x7F,0x04,0xB2,0xF0,0xAF,0xC9,0xD9,0x68,0xDE,0x11,0xEA,0x04,0x08,0x74,0xFE,0xC6,0x06,0x14,0xEF,0x08,0xD1,0xE9,0xBF,0x1E,0x53,0xCB,0xF9,0xD6,0xED,0x03,0x64,0x26,0xB0,0xD4,0x50,0xF4,0x3D,0xB2,0xD3,0x74,0x8C,0x97,0x96,0x2E,0x68,0x04,0x94,0xD0,0xAF,0x7B,0xC0,0x7E,0xA9,0xC6,0x32,0x94,0x80,0xC8,0x67,0x5E,0x20,0x5E,0x7F,0x8A,0x07,0x6A,0x1F,0x5C,0xCD,0xBB,0xAF,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x40,0xDF,0x23,0xA8,0x4B,0x37,0x90,0x62,0x9E,0xB2,0x67,0xB4,0xE2,0xEA,0x3B,0xAC,0xFC,0xF2,0x5D,0x84,0x27,0xCB,0x49,0x9A,0x5F,0xCC,0x7D,0x78,0x26,0x3B,0x7D,0xF0,0xC9,0x34,0xB2,0x02,0x83,0x08,0x1A,0x98,0x62,0x61,0xFA,0xC0,0xAF,0x0A,0x20,0x38,0xA2,0x60,0x9A,0x86,0xF4,0x37,0xBB,0xAA,0xE7,0x36,0x78,0xAC,0xDD,0xC8,0x02,0xFA,0x63,0x69,0x93,0x66,0xC3,0x09,0xF9,0xEE,0x7B,0x4B,0x2D,0x30,0xC6,0x48,0xA7,0xA8,0x42,0x26,0x0D,0xFC,0xD1,0x9B,0x90,0x7C,0xB6,0x74,0x61,0x14,0x76,0xEE,0xC2,0x60,0x58,0x36,0x86,0xAC,0xCA,0x4C,0x27,0x64,0x33,0x38,0x3F,0x34,0xB1,0xE2,0xC2,0x68,0xC3,0x1A,0x1D,0x2C,0x4D,0x47,0xFB,0x54,0x46,0xCF,0xFF,0x64,0xBC,0x3B,0x59,0x6C,0x28,0x53,0xAC,0xD8,0x8E,0x1E,0x2D,0x30,0x0D,0xE4,0x74,0x58,0xAC,0xE5,0x21,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x25,0xA2,0xD6,0xC2,0x28,0x99,0x86,0xE0,0xF5,0xE2,0x2E,0x60,0xA1,0x25,0x87,0x22,0xF1,0x93,0x13,0x48,0x5E,0x0E,0xB4,0x9C,0x65,0x0B,0xA9,0x4A,0x32,0x2D,0x50,0x5E,0xA1,0x8B,0xA9,0xB6,0x99,0x0D,0xC4,0xB4,0x47,0x07,0xEE,0x54,0x89,0x4E,0xF3,0x76,0x8B,0x5B,0xF5,0x8A,0xF0,0x67,0x45,0xE2,0xE7,0xA0,0xA4,0xCE,0xE5,0xD7,0x82,0xB0,0xAE,0xCB,0xF9,0x5C,0x73,0xF8,0x36,0x6C,0x92,0x02,0x32,0xC2,0xE5,0x47,0x37,0x90,0x02,0x56,0x16,0xFC,0xA0,0x74,0xEF,0xBA,0x87,0x1C,0x97,0x8E,0x66,0xC7,0xA3,0xA2,0x87,0xB7,0xA3,0x66,0x3A,0x89,0xDA,0xB4,0x82,0xD9,0xF4,0xE8,0x55,0x43,0x2A,0xE8,0xD1,0x4A,0x01,0x14,0x10,0xC1,0x0C,0x7E,0x52,0xEA,0x88,0xF6,0xDA,0x2B,0x93,0x92,0x62,0x2D,0xDF,0x30,0x09,0xF0,0x05,0xE8,0x63,0xFB,0xE1,0x8C,0x94,0x67,0x64,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x96,0xDF,0x8B,0xE0,0x90,0x80,0x3B,0xD8,0xC7,0x29,0xF7,0xE6,0x53,0x45,0x18,0x20,0xF2,0x8C,0x8D,0x6A,0xAA,0xE9,0xCC,0x98,0x4C,0x4B,0x9B,0xAC,0x81,0x7C,0x2D,0x16,0x48,0x6C,0x43,0xA8,0xA3,0xB1,0xFD,0x76,0x74,0xE6,0xD9,0x36,0x4E,0x44,0x22,0x6C,0x33,0x02,0xD5,0xA6,0xD6,0x91,0x23,0xDC,0x31,0x7B,0xCB,0xA6,0x18,0x19,0x8C,0xFA,0xA6,0x35,0xFC,0x2E,0x01,0xD5,0x7E,0x9C,0xC6,0xC6,0xB3,0x02,0xBD,0xBB,0x5C,0x0C,0xCE,0x52,0x56,0xD4,0x53,0x2B,0x63,0x78,0x05,0x40,0x2C,0xAA,0x25,0x63,0xF0,0xBC,0x94,0x2E,0x3C,0xF2,0x45,0x67,0x98,0x32,0xC7,0xFE,0x9C,0x36,0x7E,0xC6,0x00,0x18,0x4D,0x9C,0x69,0x30,0xA6,0x56,0x0C,0xE4,0xE6,0x08,0x92,0x4C,0x09,0x2E,0x23,0x6E,0x29,0x43,0xED,0x5A,0x2D,0x58,0xB2,0xFE,0xC7,0x18,0xCB,0x90,0x17,0x3D,0x24,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x32,0x56,0x28,0x64,0x22,0x8E,0xEC,0xB0,0xEB,0x21,0xBD,0x5A,0xCD,0x3A,0x7D,0xA8,0xAD,0xA9,0x84,0x92,0x5E,0x0F,0x77,0xA8,0x89,0x42,0xCF,0xC4,0x9D,0xF8,0xA3,0x2E,0xF0,0xF6,0x94,0xC2,0x09,0xFF,0x66,0xE8,0x41,0x8B,0xA6,0xE8,0x40,0x2B,0x4A,0xB4,0x75,0x3E,0xE6,0x92,0xAA,0x1D,0x84,0xAC,0x9C,0x20,0x8E,0xB0,0xB5,0xD0,0xC4,0xC8,0x35,0x95,0x06,0xAA,0x65,0xA9,0xD6,0x16,0x4C,0x94,0x3C,0x0C,0x4E,0x9C,0xDC,0xE6,0xA1,0x59,0x8C,0x60,0xB2,0xAB,0x10,0x30,0x44,0x4E,0x98,0xF8,0xE5,0xDA,0xB4,0xFA,0x6C,0x7E,0xB1,0xCA,0x97,0xC9,0xA9,0x08,0x88,0x66,0xC4,0x76,0x10,0xF5,0x1D,0x9E,0xF0,0x58,0x00,0xCE,0xE2,0x68,0x5D,0xD8,0x49,0xA1,0xD8,0xA6,0x07,0xC2,0x99,0x14,0xD2,0x23,0x2F,0xB2,0x80,0x98,0xF2,0x86,0xE6,0x60,0x62,0x18,0x07,0x19,0x11,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x75,0xB4,0xD8,0xF8,0x02,0x87,0x27,0xBA,0x44,0x67,0x4F,0xB8,0x1C,0x6E,0xEA,0x4A,0xA2,0x9F,0x5C,0x40,0xDC,0x33,0x09,0x54,0x45,0x62,0x2D,0x12,0xE1,0x3A,0x1A,0xC8,0xBF,0x14,0x18,0xDA,0x33,0xB4,0x7C,0x80,0x7A,0xAC,0x98,0x90,0x04,0xE0,0x01,0xFE,0x39,0xB6,0xCE,0xA0,0x63,0x98,0x01,0x36,0x15,0x76,0x78,0x8E,0xC1,0x80,0x65,0xE4,0x7D,0x66,0x58,0xF2,0xD9,0xE6,0x8B,0x78,0x74,0xB2,0x61,0xC4,0x01,0x76,0xD9,0xE0,0xBD,0x1C,0x1A,0x82,0x2F,0x66,0x89,0xC6,0xD8,0x3F,0xA4,0xE0,0x1C,0x81,0x49,0xB4,0x6A,0xCB,0x02,0xE8,0xAA,0x1E,0xB6,0xE0,0xFD,0xF3,0x90,0x6E,0x15,0xA5,0x07,0x84,0x79,0xAE,0xFF,0x6A,0x60,0x6D,0xB7,0x1C,0xA7,0x43,0x6A,0xFA,0x4D,0xBE,0x5E,0x4A,0xAF,0x36,0x4D,0x3C,0xA4,0xAB,0x6B,0x20,0x15,0x2C,0xA5,0x84,0x95,0x62,0xA2,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0x88,0xEC,0x1E,0xC9,0xE5,0xCC,0x1C,0xED,0x52,0xC0,0x54,0x7F,0xD5,0x0F,0x88,0x1A,0x0C,0x45,0x74,0x76,0xEF,0xD2,0x0C,0x9A,0x88,0x65,0x06,0xB0,0x14,0xE1,0x7A,0x64,0xEA,0xF9,0x82,0xCF,0xD6,0xF6,0x7A,0xE5,0xC8,0xBB,0xB2,0xFF,0xC2,0x3A,0xE6,0x34,0x99,0x01,0x42,0x69,0x4C,0x35,0x70,0xC6,0x0D,0x06,0xB6,0xF2,0x16,0xCE,0x40,0xD7,0x47,0x29,0x80,0x71,0x2D,0x1B,0x6A,0xD5,0xAA,0x16,0x60,0xB7,0xA6,0x8D,0x72,0xB7,0xC7,0x00,0xD0,0x1A,0xE9,0xC5,0x42,0x8F,0x3B,0x65,0x78,0xA8,0x60,0xA0,0x54,0x66,0xCD,0xFC,0xF4,0x4F,0xFD,0x26,0xC4,0x29,0x8B,0xC1,0xE8,0xB8,0x98,0x06,0x34,0x6D,0x64,0x83,0x5E,0x27,0x6C,0xDB,0x84,0xBC,0x5B,0x8C,0xE6,0x90,0x12,0x2D,0xB8,0x22,0x6B,0x0A,0x3E,0x62,0xFC,0xD9,0x82,0x50,0xAB,0x3F,0x58,0x78,0xE4,0xA5,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x5D,0x9D,0x8D,0x0C,0x0C,0x50,0x2C,0x0E,0x4E,0x68,0x0E,0x5A,0x3C,0xA4,0x33,0x94,0x73,0x11,0xC8,0x6A,0x0E,0x11,0xFF,0x58,0x22,0x67,0x95,0x1C,0x33,0x51,0x83,0x14,0xC5,0x28,0xF9,0xAC,0xF9,0x37,0x36,0x4C,0x8B,0x20,0x59,0xCE,0x10,0xB2,0xF7,0xE8,0x59,0x3C,0xD4,0xFC,0x59,0x65,0xC0,0xB8,0x22,0x06,0xEE,0xD2,0x18,0x1B,0x43,0xA4,0x1C,0x91,0xA1,0x98,0x4B,0x06,0xA3,0xBE,0x2B,0x6D,0x1A,0xF0,0xD7,0x0D,0x3B,0x24,0xEA,0x74,0x9D,0x82,0xC5,0xCA,0x71,0x0A,0xB0,0x4B,0xEE,0x1A,0x00,0x49,0x67,0xA0,0x93,0x97,0x66,0x32,0x49,0x32,0x2C,0xA8,0xF9,0xAE,0xA7,0xBE,0xE3,0xD8,0x7F,0x48,0x81,0x8B,0x5C,0xF6,0xC4,0x45,0x16,0x52,0xDC,0x6E,0x99,0xB2,0x5D,0x7B,0xC7,0xE8,0x42,0x62,0xAF,0x7A,0x26,0xFA,0x5F,0xEC,0xF9,0x4C,0x60,0x32,0xB9,0x73,0x98,0x5E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xEE,0x34,0x3B,0xE4,0xEA,0x19,0xB2,0xC0,0xBA,0x24,0x95,0x08,0x7C,0x60,0xFB,0x44,0x66,0x1A,0x98,0x6A,0x1F,0x4E,0xA1,0x9C,0x56,0x50,0x67,0xC8,0x09,0x04,0x89,0xAC,0x43,0x9E,0x9C,0x36,0x0B,0x99,0x11,0xF4,0xAD,0x16,0x0A,0xF0,0x61,0xD2,0x3E,0xDE,0xB0,0x12,0xD0,0xF6,0x2E,0xCA,0xF6,0x6A,0x4B,0x31,0xF3,0xD6,0x02,0xF8,0xD6,0x40,0x80,0xA0,0xED,0x40,0x52,0x56,0x7D,0x7C,0xEE,0xD6,0x5C,0xBC,0xC7,0x49,0x80,0x6E,0xB6,0x1B,0x55,0x4A,0x44,0x4D,0x14,0x6A,0x62,0x6C,0x13,0xB8,0x21,0x3E,0x42,0xA4,0xEF,0x7B,0xF2,0x82,0x2E,0xB3,0xA4,0x22,0x16,0xE1,0xBB,0x9E,0xF6,0x24,0x92,0x1C,0x45,0xA5,0x37,0x3C,0x6F,0x57,0x7D,0xA4,0xBB,0x5E,0xA8,0xDE,0x85,0xFB,0xD1,0x42,0xE6,0x2A,0x5F,0x74,0x2F,0x3D,0x04,0x2A,0x41,0x78,0xD6,0xE6,0x93,0x9E,0x75,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x36,0xAF,0xB0,0x2C,0x4F,0x28,0x9E,0x6A,0x44,0xEC,0xB9,0x42,0x0D,0xEB,0x01,0xE2,0xB4,0x9C,0x1C,0xD6,0x85,0xDE,0x37,0x12,0x92,0x2A,0xB0,0x34,0x5F,0x81,0x2E,0xD8,0x1B,0x7B,0xDA,0x5E,0x49,0xA1,0x59,0x18,0x1F,0xC5,0xE3,0x60,0x5A,0x4D,0x06,0xB8,0xD2,0x03,0x6F,0x74,0xB8,0x7E,0x53,0x56,0xBB,0xC0,0x60,0xD8,0xF2,0x0C,0x2B,0x38,0xE7,0x68,0xA7,0x6A,0x86,0x3C,0x2D,0x38,0x13,0xB0,0xBA,0xF4,0xB2,0xEE,0xCB,0xC8,0x23,0x8C,0x23,0x3E,0x4F,0x25,0x29,0xBA,0xFF,0x65,0xB3,0x16,0x00,0xA9,0x4C,0x04,0x3D,0xB3,0x8A,0xF8,0x32,0xE0,0x5B,0x4A,0x5C,0x79,0xE0,0x66,0x70,0xD4,0x81,0x0E,0x7E,0x13,0x31,0x36,0x73,0xD9,0x1D,0x28,0xC9,0x60,0x5D,0x04,0x26,0x26,0x28,0x0C,0x73,0xF3,0x6B,0x60,0xBB,0x07,0x57,0xEE,0xAB,0x11,0x33,0xFE,0x4E,0xF6,0x79,0xDA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x83,0x96,0x0C,0x2A,0xE6,0xED,0xA8,0x1E,0x58,0x80,0x30,0x60,0xCB,0xD2,0xF5,0x54,0xC9,0xF1,0x37,0x0A,0x24,0x71,0xD0,0xBC,0x51,0x70,0x93,0x12,0x43,0x84,0xE4,0x5E,0x2E,0xAA,0xCE,0x64,0x18,0x82,0x3B,0x1C,0xBB,0x23,0xC9,0x04,0x73,0xDA,0x81,0xFA,0xA1,0xF6,0xDE,0xDA,0x9A,0x7B,0xDA,0x52,0x2D,0x00,0xEB,0xCC,0x3D,0xA3,0xB0,0x42,0xAF,0x4F,0x12,0xF8,0x66,0x4B,0x53,0x6C,0x7F,0x04,0xB2,0xF0,0xAF,0xC9,0xD9,0x68,0xDE,0x11,0xEA,0x04,0x08,0x74,0xFE,0xC6,0x06,0x14,0xEF,0x08,0xD1,0xE9,0xBF,0x1E,0x53,0xCB,0xF9,0xD6,0xED,0x03,0x64,0x26,0xB0,0xD4,0x50,0xF4,0x3D,0xB2,0xD3,0x74,0x8C,0x97,0x96,0x2E,0x68,0x04,0x94,0xD0,0xAF,0x7B,0xC0,0x7E,0xA9,0xC6,0x32,0x94,0x80,0xC8,0x67,0x5E,0x20,0x5E,0x7F,0x8A,0x07,0x6A,0x1F,0x5C,0xCD,0xBB,0xAF,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x40,0xDF,0x23,0xA8,0x4B,0x37,0x90,0x62,0x9E,0xB2,0x67,0xB4,0xE2,0xEA,0x3B,0xAC,0xFC,0xF2,0x5D,0x84,0x27,0xCB,0x49,0x9A,0x5F,0xCC,0x7D,0x78,0x26,0x3B,0x7D,0xF0,0xC9,0x34,0xB2,0x02,0x83,0x08,0x1A,0x98,0x62,0x61,0xFA,0xC0,0xAF,0x0A,0x20,0x38,0xA2,0x60,0x9A,0x86,0xF4,0x37,0xBB,0xAA,0xE7,0x36,0x78,0xAC,0xDD,0xC8,0x02,0xFA,0x63,0x69,0x93,0x66,0xC3,0x09,0xF9,0xEE,0x7B,0x4B,0x2D,0x30,0xC6,0x48,0xA7,0xA8,0x42,0x26,0x0D,0xFC,0xD1,0x9B,0x90,0x7C,0xB6,0x74,0x61,0x14,0x76,0xEE,0xC2,0x60,0x58,0x36,0x86,0xAC,0xCA,0x4C,0x27,0x64,0x33,0x38,0x3F,0x34,0xB1,0xE2,0xC2,0x68,0xC3,0x1A,0x1D,0x2C,0x4D,0x47,0xFB,0x54,0x46,0xCF,0xFF,0x64,0xBC,0x3B,0x59,0x6C,0x28,0x53,0xAC,0xD8,0x8E,0x1E,0x2D,0x30,0x0D,0xE4,0x74,0x58,0xAC,0xE5,0x21,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x25,0xA2,0xD6,0xC2,0x28,0x99,0x86,0xE0,0xF5,0xE2,0x2E,0x60,0xA1,0x25,0x87,0x22,0xF1,0x93,0x13,0x48,0x5E,0x0E,0xB4,0x9C,0x65,0x0B,0xA9,0x4A,0x32,0x2D,0x50,0x5E,0xA1,0x8B,0xA9,0xB6,0x99,0x0D,0xC4,0xB4,0x47,0x07,0xEE,0x54,0x89,0x4E,0xF3,0x76,0x8B,0x5B,0xF5,0x8A,0xF0,0x67,0x45,0xE2,0xE7,0xA0,0xA4,0xCE,0xE5,0xD7,0x82,0xB0,0xAE,0xCB,0xF9,0x5C,0x73,0xF8,0x36,0x6C,0x92,0x02,0x32,0xC2,0xE5,0x47,0x37,0x90,0x02,0x56,0x16,0xFC,0xA0,0x74,0xEF,0xBA,0x87,0x1C,0x97,0x8E,0x66,0xC7,0xA3,0xA2,0x87,0xB7,0xA3,0x66,0x3A,0x89,0xDA,0xB4,0x82,0xD9,0xF4,0xE8,0x55,0x43,0x2A,0xE8,0xD1,0x4A,0x01,0x14,0x10,0xC1,0x0C,0x7E,0x52,0xEA,0x88,0xF6,0xDA,0x2B,0x93,0x92,0x62,0x2D,0xDF,0x30,0x09,0xF0,0x05,0xE8,0x63,0xFB,0xE1,0x8C,0x94,0x67,0x64,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x96,0xDF,0x8B,0xE0,0x90,0x80,0x3B,0xD8,0xC7,0x29,0xF7,0xE6,0x53,0x45,0x18,0x20,0xF2,0x8C,0x8D,0x6A,0xAA,0xE9,0xCC,0x98,0x4C,0x4B,0x9B,0xAC,0x81,0x7C,0x2D,0x16,0x48,0x6C,0x43,0xA8,0xA3,0xB1,0xFD,0x76,0x74,0xE6,0xD9,0x36,0x4E,0x44,0x22,0x6C,0x33,0x02,0xD5,0xA6,0xD6,0x91,0x23,0xDC,0x31,0x7B,0xCB,0xA6,0x18,0x19,0x8C,0xFA,0xA6,0x35,0xFC,0x2E,0x01,0xD5,0x7E,0x9C,0xC6,0xC6,0xB3,0x02,0xBD,0xBB,0x5C,0x0C,0xCE,0x52,0x56,0xD4,0x53,0x2B,0x63,0x78,0x05,0x40,0x2C,0xAA,0x25,0x63,0xF0,0xBC,0x94,0x2E,0x3C,0xF2,0x45,0x67,0x98,0x32,0xC7,0xFE,0x9C,0x36,0x7E,0xC6,0x00,0x18,0x4D,0x9C,0x69,0x30,0xA6,0x56,0x0C,0xE4,0xE6,0x08,0x92,0x4C,0x09,0x2E,0x23,0x6E,0x29,0x43,0xED,0x5A,0x2D,0x58,0xB2,0xFE,0xC7,0x18,0xCB,0x90,0x17,0x3D,0x24,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x32,0x56,0x28,0x64,0x22,0x8E,0xEC,0xB0,0xEB,0x21,0xBD,0x5A,0xCD,0x3A,0x7D,0xA8,0xAD,0xA9,0x84,0x92,0x5E,0x0F,0x77,0xA8,0x89,0x42,0xCF,0xC4,0x9D,0xF8,0xA3,0x2E,0xF0,0xF6,0x94,0xC2,0x09,0xFF,0x66,0xE8,0x41,0x8B,0xA6,0xE8,0x40,0x2B,0x4A,0xB4,0x75,0x3E,0xE6,0x92,0xAA,0x1D,0x84,0xAC,0x9C,0x20,0x8E,0xB0,0xB5,0xD0,0xC4,0xC8,0x35,0x95,0x06,0xAA,0x65,0xA9,0xD6,0x16,0x4C,0x94,0x3C,0x0C,0x4E,0x9C,0xDC,0xE6,0xA1,0x59,0x8C,0x60,0xB2,0xAB,0x10,0x30,0x44,0x4E,0x98,0xF8,0xE5,0xDA,0xB4,0xFA,0x6C,0x7E,0xB1,0xCA,0x97,0xC9,0xA9,0x08,0x88,0x66,0xC4,0x76,0x10,0xF5,0x1D,0x9E,0xF0,0x58,0x00,0xCE,0xE2,0x68,0x5D,0xD8,0x49,0xA1,0xD8,0xA6,0x07,0xC2,0x99,0x14,0xD2,0x23,0x2F,0xB2,0x80,0x98,0xF2,0x86,0xE6,0x60,0x62,0x18,0x07,0x19,0x11,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x75,0xB4,0xD8,0xF8,0x02,0x87,0x27,0xBA,0x44,0x67,0x4F,0xB8,0x1C,0x6E,0xEA,0x4A,0xA2,0x9F,0x5C,0x40,0xDC,0x33,0x09,0x54,0x45,0x62,0x2D,0x12,0xE1,0x3A,0x1A,0xC8,0xBF,0x14,0x18,0xDA,0x33,0xB4,0x7C,0x80,0x7A,0xAC,0x98,0x90,0x04,0xE0,0x01,0xFE,0x39,0xB6,0xCE,0xA0,0x63,0x98,0x01,0x36,0x15,0x76,0x78,0x8E,0xC1,0x80,0x65,0xE4,0x7D,0x66,0x58,0xF2,0xD9,0xE6,0x8B,0x78,0x74,0xB2,0x61,0xC4,0x01,0x76,0xD9,0xE0,0xBD,0x1C,0x1A,0x82,0x2F,0x66,0x89,0xC6,0xD8,0x3F,0xA4,0xE0,0x1C,0x81,0x49,0xB4,0x6A,0xCB,0x02,0xE8,0xAA,0x1E,0xB6,0xE0,0xFD,0xF3,0x90,0x6E,0x15,0xA5,0x07,0x84,0x79,0xAE,0xFF,0x6A,0x60,0x6D,0xB7,0x1C,0xA7,0x43,0x6A,0xFA,0x4D,0xBE,0x5E,0x4A,0xAF,0x36,0x4D,0x3C,0xA4,0xAB,0x6B,0x20,0x15,0x2C,0xA5,0x84,0x95,0x62,0xA2,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0x88,0xEC,0x1E,0xC9,0xE5,0xCC,0x1C,0xED,0x52,0xC0,0x54,0x7F,0xD5,0x0F,0x88,0x1A,0x0C,0x45,0x74,0x76,0xEF,0xD2,0x0C,0x9A,0x88,0x65,0x06,0xB0,0x14,0xE1,0x7A,0x64,0xEA,0xF9,0x82,0xCF,0xD6,0xF6,0x7A,0xE5,0xC8,0xBB,0xB2,0xFF,0xC2,0x3A,0xE6,0x34,0x99,0x01,0x42,0x69,0x4C,0x35,0x70,0xC6,0x0D,0x06,0xB6,0xF2,0x16,0xCE,0x40,0xD7,0x47,0x29,0x80,0x71,0x2D,0x1B,0x6A,0xD5,0xAA,0x16,0x60,0xB7,0xA6,0x8D,0x72,0xB7,0xC7,0x00,0xD0,0x1A,0xE9,0xC5,0x42,0x8F,0x3B,0x65,0x78,0xA8,0x60,0xA0,0x54,0x66,0xCD,0xFC,0xF4,0x4F,0xFD,0x26,0xC4,0x29,0x8B,0xC1,0xE8,0xB8,0x98,0x06,0x34,0x6D,0x64,0x83,0x5E,0x27,0x6C,0xDB,0x84,0xBC,0x5B,0x8C,0xE6,0x90,0x12,0x2D,0xB8,0x22,0x6B,0x0A,0x3E,0x62,0xFC,0xD9,0x82,0x50,0xAB,0x3F,0x58,0x78,0xE4,0xA5,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x5D,0x9D,0x8D,0x0C,0x0C,0x50,0x2C,0x0E,0x4E,0x68,0x0E,0x5A,0x3C,0xA4,0x33,0x94,0x73,0x11,0xC8,0x6A,0x0E,0x11,0xFF,0x58,0x22,0x67,0x95,0x1C,0x33,0x51,0x83,0x14,0xC5,0x28,0xF9,0xAC,0xF9,0x37,0x36,0x4C,0x8B,0x20,0x59,0xCE,0x10,0xB2,0xF7,0xE8,0x59,0x3C,0xD4,0xFC,0x59,0x65,0xC0,0xB8,0x22,0x06,0xEE,0xD2,0x18,0x1B,0x43,0xA4,0x1C,0x91,0xA1,0x98,0x4B,0x06,0xA3,0xBE,0x2B,0x6D,0x1A,0xF0,0xD7,0x0D,0x3B,0x24,0xEA,0x74,0x9D,0x82,0xC5,0xCA,0x71,0x0A,0xB0,0x4B,0xEE,0x1A,0x00,0x49,0x67,0xA0,0x93,0x97,0x66,0x32,0x49,0x32,0x2C,0xA8,0xF9,0xAE,0xA7,0xBE,0xE3,0xD8,0x7F,0x48,0x81,0x8B,0x5C,0xF6,0xC4,0x45,0x16,0x52,0xDC,0x6E,0x99,0xB2,0x5D,0x7B,0xC7,0xE8,0x42,0x62,0xAF,0x7A,0x26,0xFA,0x5F,0xEC,0xF9,0x4C,0x60,0x32,0xB9,0x73,0x98,0x5E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xEE,0x34,0x3B,0xE4,0xEA,0x19,0xB2,0xC0,0xBA,0x24,0x95,0x08,0x7C,0x60,0xFB,0x44,0x66,0x1A,0x98,0x6A,0x1F,0x4E,0xA1,0x9C,0x56,0x50,0x67,0xC8,0x09,0x04,0x89,0xAC,0x43,0x9E,0x9C,0x36,0x0B,0x99,0x11,0xF4,0xAD,0x16,0x0A,0xF0,0x61,0xD2,0x3E,0xDE,0xB0,0x12,0xD0,0xF6,0x2E,0xCA,0xF6,0x6A,0x4B,0x31,0xF3,0xD6,0x02,0xF8,0xD6,0x40,0x80,0xA0,0xED,0x40,0x52,0x56,0x7D,0x7C,0xEE,0xD6,0x5C,0xBC,0xC7,0x49,0x80,0x6E,0xB6,0x1B,0x55,0x4A,0x44,0x4D,0x14,0x6A,0x62,0x6C,0x13,0xB8,0x21,0x3E,0x42,0xA4,0xEF,0x7B,0xF2,0x82,0x2E,0xB3,0xA4,0x22,0x16,0xE1,0xBB,0x9E,0xF6,0x24,0x92,0x1C,0x45,0xA5,0x37,0x3C,0x6F,0x57,0x7D,0xA4,0xBB,0x5E,0xA8,0xDE,0x85,0xFB,0xD1,0x42,0xE6,0x2A,0x5F,0x74,0x2F,0x3D,0x04,0x2A,0x41,0x78,0xD6,0xE6,0x93,0x9E,0x75,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x36,0xAF,0xB0,0x2C,0x4F,0x28,0x9E,0x6A,0x44,0xEC,0xB9,0x42,0x0D,0xEB,0x01,0xE2,0xB4,0x9C,0x1C,0xD6,0x85,0xDE,0x37,0x12,0x92,0x2A,0xB0,0x34,0x5F,0x81,0x2E,0xD8,0x1B,0x7B,0xDA,0x5E,0x49,0xA1,0x59,0x18,0x1F,0xC5,0xE3,0x60,0x5A,0x4D,0x06,0xB8,0xD2,0x03,0x6F,0x74,0xB8,0x7E,0x53,0x56,0xBB,0xC0,0x60,0xD8,0xF2,0x0C,0x2B,0x38,0xE7,0x68,0xA7,0x6A,0x86,0x3C,0x2D,0x38,0x13,0xB0,0xBA,0xF4,0xB2,0xEE,0xCB,0xC8,0x23,0x8C,0x23,0x3E,0x4F,0x25,0x29,0xBA,0xFF,0x65,0xB3,0x16,0x00,0xA9,0x4C,0x04,0x3D,0xB3,0x8A,0xF8,0x32,0xE0,0x5B,0x4A,0x5C,0x79,0xE0,0x66,0x70,0xD4,0x81,0x0E,0x7E,0x13,0x31,0x36,0x73,0xD9,0x1D,0x28,0xC9,0x60,0x5D,0x04,0x26,0x26,0x28,0x0C,0x73,0xF3,0x6B,0x60,0xBB,0x07,0x57,0xEE,0xAB,0x11,0x33,0xFE,0x4E,0xF6,0x79,0xDA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x83,0x96,0x0C,0x2A,0xE6,0xED,0xA8,0x1E,0x58,0x80,0x30,0x60,0xCB,0xD2,0xF5,0x54,0xC9,0xF1,0x37,0x0A,0x24,0x71,0xD0,0xBC,0x51,0x70,0x93,0x12,0x43,0x84,0xE4,0x5E,0x2E,0xAA,0xCE,0x64,0x18,0x82,0x3B,0x1C,0xBB,0x23,0xC9,0x04,0x73,0xDA,0x81,0xFA,0xA1,0xF6,0xDE,0xDA,0x9A,0x7B,0xDA,0x52,0x2D,0x00,0xEB,0xCC,0x3D,0xA3,0xB0,0x42,0xAF,0x4F,0x12,0xF8,0x66,0x4B,0x53,0x6C,0x7F,0x04,0xB2,0xF0,0xAF,0xC9,0xD9,0x68,0xDE,0x11,0xEA,0x04,0x08,0x74,0xFE,0xC6,0x06,0x14,0xEF,0x08,0xD1,0xE9,0xBF,0x1E,0x53,0xCB,0xF9,0xD6,0xED,0x03,0x64,0x26,0xB0,0xD4,0x50,0xF4,0x3D,0xB2,0xD3,0x74,0x8C,0x97,0x96,0x2E,0x68,0x04,0x94,0xD0,0xAF,0x7B,0xC0,0x7E,0xA9,0xC6,0x32,0x94,0x80,0xC8,0x67,0x5E,0x20,0x5E,0x7F,0x8A,0x07,0x6A,0x1F,0x5C,0xCD,0xBB,0xAF,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x40,0xDF,0x23,0xA8,0x4B,0x37,0x90,0x62,0x9E,0xB2,0x67,0xB4,0xE2,0xEA,0x3B,0xAC,0xFC,0xF2,0x5D,0x84,0x27,0xCB,0x49,0x9A,0x5F,0xCC,0x7D,0x78,0x26,0x3B,0x7D,0xF0,0xC9,0x34,0xB2,0x02,0x83,0x08,0x1A,0x98,0x62,0x61,0xFA,0xC0,0xAF,0x0A,0x20,0x38,0xA2,0x60,0x9A,0x86,0xF4,0x37,0xBB,0xAA,0xE7,0x36,0x78,0xAC,0xDD,0xC8,0x02,0xFA,0x63,0x69,0x93,0x66,0xC3,0x09,0xF9,0xEE,0x7B,0x4B,0x2D,0x30,0xC6,0x48,0xA7,0xA8,0x42,0x26,0x0D,0xFC,0xD1,0x9B,0x90,0x7C,0xB6,0x74,0x61,0x14,0x76,0xEE,0xC2,0x60,0x58,0x36,0x86,0xAC,0xCA,0x4C,0x27,0x64,0x33,0x38,0x3F,0x34,0xB1,0xE2,0xC2,0x68,0xC3,0x1A,0x1D,0x2C,0x4D,0x47,0xFB,0x54,0x46,0xCF,0xFF,0x64,0xBC,0x3B,0x59,0x6C,0x28,0x53,0xAC,0xD8,0x8E,0x1E,0x2D,0x30,0x0D,0xE4,0x74,0x58,0xAC,0xE5,0x21,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x25,0xA2,0xD6,0xC2,0x28,0x99,0x86,0xE0,0xF5,0xE2,0x2E,0x60,0xA1,0x25,0x87,0x22,0xF1,0x93,0x13,0x48,0x5E,0x0E,0xB4,0x9C,0x65,0x0B,0xA9,0x4A,0x32,0x2D,0x50,0x5E,0xA1,0x8B,0xA9,0xB6,0x99,0x0D,0xC4,0xB4,0x47,0x07,0xEE,0x54,0x89,0x4E,0xF3,0x76,0x8B,0x5B,0xF5,0x8A,0xF0,0x67,0x45,0xE2,0xE7,0xA0,0xA4,0xCE,0xE5,0xD7,0x82,0xB0,0xAE,0xCB,0xF9,0x5C,0x73,0xF8,0x36,0x6C,0x92,0x02,0x32,0xC2,0xE5,0x47,0x37,0x90,0x02,0x56,0x16,0xFC,0xA0,0x74,0xEF,0xBA,0x87,0x1C,0x97,0x8E,0x66,0xC7,0xA3,0xA2,0x87,0xB7,0xA3,0x66,0x3A,0x89,0xDA,0xB4,0x82,0xD9,0xF4,0xE8,0x55,0x43,0x2A,0xE8,0xD1,0x4A,0x01,0x14,0x10,0xC1,0x0C,0x7E,0x52,0xEA,0x88,0xF6,0xDA,0x2B,0x93,0x92,0x62,0x2D,0xDF,0x30,0x09,0xF0,0x05,0xE8,0x63,0xFB,0xE1,0x8C,0x94,0x67,0x64,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x96,0xDF,0x8B,0xE0,0x90,0x80,0x3B,0xD8,0xC7,0x29,0xF7,0xE6,0x53,0x45,0x18,0x20,0xF2,0x8C,0x8D,0x6A,0xAA,0xE9,0xCC,0x98,0x4C,0x4B,0x9B,0xAC,0x81,0x7C,0x2D,0x16,0x48,0x6C,0x43,0xA8,0xA3,0xB1,0xFD,0x76,0x74,0xE6,0xD9,0x36,0x4E,0x44,0x22,0x6C,0x33,0x02,0xD5,0xA6,0xD6,0x91,0x23,0xDC,0x31,0x7B,0xCB,0xA6,0x18,0x19,0x8C,0xFA,0xA6,0x35,0xFC,0x2E,0x01,0xD5,0x7E,0x9C,0xC6,0xC6,0xB3,0x02,0xBD,0xBB,0x5C,0x0C,0xCE,0x52,0x56,0xD4,0x53,0x2B,0x63,0x78,0x05,0x40,0x2C,0xAA,0x25,0x63,0xF0,0xBC,0x94,0x2E,0x3C,0xF2,0x45,0x67,0x98,0x32,0xC7,0xFE,0x9C,0x36,0x7E,0xC6,0x00,0x18,0x4D,0x9C,0x69,0x30,0xA6,0x56,0x0C,0xE4,0xE6,0x08,0x92,0x4C,0x09,0x2E,0x23,0x6E,0x29,0x43,0xED,0x5A,0x2D,0x58,0xB2,0xFE,0xC7,0x18,0xCB,0x90,0x17,0x3D,0x24,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x32,0x56,0x28,0x64,0x22,0x8E,0xEC,0xB0,0xEB,0x21,0xBD,0x5A,0xCD,0x3A,0x7D,0xA8,0xAD,0xA9,0x84,0x92,0x5E,0x0F,0x77,0xA8,0x89,0x42,0xCF,0xC4,0x9D,0xF8,0xA3,0x2E,0xF0,0xF6,0x94,0xC2,0x09,0xFF,0x66,0xE8,0x41,0x8B,0xA6,0xE8,0x40,0x2B,0x4A,0xB4,0x75,0x3E,0xE6,0x92,0xAA,0x1D,0x84,0xAC,0x9C,0x20,0x8E,0xB0,0xB5,0xD0,0xC4,0xC8,0x35,0x95,0x06,0xAA,0x65,0xA9,0xD6,0x16,0x4C,0x94,0x3C,0x0C,0x4E,0x9C,0xDC,0xE6,0xA1,0x59,0x8C,0x60,0xB2,0xAB,0x10,0x30,0x44,0x4E,0x98,0xF8,0xE5,0xDA,0xB4,0xFA,0x6C,0x7E,0xB1,0xCA,0x97,0xC9,0xA9,0x08,0x88,0x66,0xC4,0x76,0x10,0xF5,0x1D,0x9E,0xF0,0x58,0x00,0xCE,0xE2,0x68,0x5D,0xD8,0x49,0xA1,0xD8,0xA6,0x07,0xC2,0x99,0x14,0xD2,0x23,0x2F,0xB2,0x80,0x98,0xF2,0x86,0xE6,0x60,0x62,0x18,0x07,0x19,0x11,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x75,0xB4,0xD8,0xF8,0x02,0x87,0x27,0xBA,0x44,0x67,0x4F,0xB8,0x1C,0x6E,0xEA,0x4A,0xA2,0x9F,0x5C,0x40,0xDC,0x33,0x09,0x54,0x45,0x62,0x2D,0x12,0xE1,0x3A,0x1A,0xC8,0xBF,0x14,0x18,0xDA,0x33,0xB4,0x7C,0x80,0x7A,0xAC,0x98,0x90,0x04,0xE0,0x01,0xFE,0x39,0xB6,0xCE,0xA0,0x63,0x98,0x01,0x36,0x15,0x76,0x78,0x8E,0xC1,0x80,0x65,0xE4,0x7D,0x66,0x58,0xF2,0xD9,0xE6,0x8B,0x78,0x74,0xB2,0x61,0xC4,0x01,0x76,0xD9,0xE0,0xBD,0x1C,0x1A,0x82,0x2F,0x66,0x89,0xC6,0xD8,0x3F,0xA4,0xE0,0x1C,0x81,0x49,0xB4,0x6A,0xCB,0x02,0xE8,0xAA,0x1E,0xB6,0xE0,0xFD,0xF3,0x90,0x6E,0x15,0xA5,0x07,0x84,0x79,0xAE,0xFF,0x6A,0x60,0x6D,0xB7,0x1C,0xA7,0x43,0x6A,0xFA,0x4D,0xBE,0x5E,0x4A,0xAF,0x36,0x4D,0x3C,0xA4,0xAB,0x6B,0x20,0x15,0x2C,0xA5,0x84,0x95,0x62,0xA2,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0x88,0xEC,0x1E,0xC9,0xE5,0xCC,0x1C,0xED,0x52,0xC0,0x54,0x7F,0xD5,0x0F,0x88,0x1A,0x0C,0x45,0x74,0x76,0xEF,0xD2,0x0C,0x9A,0x88,0x65,0x06,0xB0,0x14,0xE1,0x7A,0x64,0xEA,0xF9,0x82,0xCF,0xD6,0xF6,0x7A,0xE5,0xC8,0xBB,0xB2,0xFF,0xC2,0x3A,0xE6,0x34,0x99,0x01,0x42,0x69,0x4C,0x35,0x70,0xC6,0x0D,0x06,0xB6,0xF2,0x16,0xCE,0x40,0xD7,0x47,0x29,0x80,0x71,0x2D,0x1B,0x6A,0xD5,0xAA,0x16,0x60,0xB7,0xA6,0x8D,0x72,0xB7,0xC7,0x00,0xD0,0x1A,0xE9,0xC5,0x42,0x8F,0x3B,0x65,0x78,0xA8,0x60,0xA0,0x54,0x66,0xCD,0xFC,0xF4,0x4F,0xFD,0x26,0xC4,0x29,0x8B,0xC1,0xE8,0xB8,0x98,0x06,0x34,0x6D,0x64,0x83,0x5E,0x27,0x6C,0xDB,0x84,0xBC,0x5B,0x8C,0xE6,0x90,0x12,0x2D,0xB8,0x22,0x6B,0x0A,0x3E,0x62,0xFC,0xD9,0x82,0x50,0xAB,0x3F,0x58,0x78,0xE4,0xA5,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x5D,0x9D,0x8D,0x0C,0x0C,0x50,0x2C,0x0E,0x4E,0x68,0x0E,0x5A,0x3C,0xA4,0x33,0x94,0x73,0x11,0xC8,0x6A,0x0E,0x11,0xFF,0x58,0x22,0x67,0x95,0x1C,0x33,0x51,0x83,0x14,0xC5,0x28,0xF9,0xAC,0xF9,0x37,0x36,0x4C,0x8B,0x20,0x59,0xCE,0x10,0xB2,0xF7,0xE8,0x59,0x3C,0xD4,0xFC,0x59,0x65,0xC0,0xB8,0x22,0x06,0xEE,0xD2,0x18,0x1B,0x43,0xA4,0x1C,0x91,0xA1,0x98,0x4B,0x06,0xA3,0xBE,0x2B,0x6D,0x1A,0xF0,0xD7,0x0D,0x3B,0x24,0xEA,0x74,0x9D,0x82,0xC5,0xCA,0x71,0x0A,0xB0,0x4B,0xEE,0x1A,0x00,0x49,0x67,0xA0,0x93,0x97,0x66,0x32,0x49,0x32,0x2C,0xA8,0xF9,0xAE,0xA7,0xBE,0xE3,0xD8,0x7F,0x48,0x81,0x8B,0x5C,0xF6,0xC4,0x45,0x16,0x52,0xDC,0x6E,0x99,0xB2,0x5D,0x7B,0xC7,0xE8,0x42,0x62,0xAF,0x7A,0x26,0xFA,0x5F,0xEC,0xF9,0x4C,0x60,0x32,0xB9,0x73,0x98,0x5E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xEE,0x34,0x3B,0xE4,0xEA,0x19,0xB2,0xC0,0xBA,0x24,0x95,0x08,0x7C,0x60,0xFB,0x44,0x66,0x1A,0x98,0x6A,0x1F,0x4E,0xA1,0x9C,0x56,0x50,0x67,0xC8,0x09,0x04,0x89,0xAC,0x43,0x9E,0x9C,0x36,0x0B,0x99,0x11,0xF4,0xAD,0x16,0x0A,0xF0,0x61,0xD2,0x3E,0xDE,0xB0,0x12,0xD0,0xF6,0x2E,0xCA,0xF6,0x6A,0x4B,0x31,0xF3,0xD6,0x02,0xF8,0xD6,0x40,0x80,0xA0,0xED,0x40,0x52,0x56,0x7D,0x7C,0xEE,0xD6,0x5C,0xBC,0xC7,0x49,0x80,0x6E,0xB6,0x1B,0x55,0x4A,0x44,0x4D,0x14,0x6A,0x62,0x6C,0x13,0xB8,0x21,0x3E,0x42,0xA4,0xEF,0x7B,0xF2,0x82,0x2E,0xB3,0xA4,0x22,0x16,0xE1,0xBB,0x9E,0xF6,0x24,0x92,0x1C,0x45,0xA5,0x37,0x3C,0x6F,0x57,0x7D,0xA4,0xBB,0x5E,0xA8,0xDE,0x85,0xFB,0xD1,0x42,0xE6,0x2A,0x5F,0x74,0x2F,0x3D,0x04,0x2A,0x41,0x78,0xD6,0xE6,0x93,0x9E,0x75,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x36,0xAF,0xB0,0x2C,0x4F,0x28,0x9E,0x6A,0x44,0xEC,0xB9,0x42,0x0D,0xEB,0x01,0xE2,0xB4,0x9C,0x1C,0xD6,0x85,0xDE,0x37,0x12,0x92,0x2A,0xB0,0x34,0x5F,0x81,0x2E,0xD8,0x1B,0x7B,0xDA,0x5E,0x49,0xA1,0x59,0x18,0x1F,0xC5,0xE3,0x60,0x5A,0x4D,0x06,0xB8,0xD2,0x03,0x6F,0x74,0xB8,0x7E,0x53,0x56,0xBB,0xC0,0x60,0xD8,0xF2,0x0C,0x2B,0x38,0xE7,0x68,0xA7,0x6A,0x86,0x3C,0x2D,0x38,0x13,0xB0,0xBA,0xF4,0xB2,0xEE,0xCB,0xC8,0x23,0x8C,0x23,0x3E,0x4F,0x25,0x29,0xBA,0xFF,0x65,0xB3,0x16,0x00,0xA9,0x4C,0x04,0x3D,0xB3,0x8A,0xF8,0x32,0xE0,0x5B,0x4A,0x5C,0x79,0xE0,0x66,0x70,0xD4,0x81,0x0E,0x7E,0x13,0x31,0x36,0x73,0xD9,0x1D,0x28,0xC9,0x60,0x5D,0x04,0x26,0x26,0x28,0x0C,0x73,0xF3,0x6B,0x60,0xBB,0x07,0x57,0xEE,0xAB,0x11,0x33,0xFE,0x4E,0xF6,0x79,0xDA,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,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,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,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,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,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,0x00,0x00,0x00,0x00,0x00,0x00}; unsigned char Segment[] = {0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,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,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; unsigned char EOS[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,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,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,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,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,0x00,0x00,0x00,0x00,0x00,0x00}; unsigned char max_segment = (65535 - 120)/(48 + 40*134);//12 unsigned char buffer_112[112]; //int initialise_card(); //int disk_initialize(); #define reset_flags {\ Adf_data_counter=0;\ status =0;\ cmd_err_cnt=0;\ data_length;\ state_err_cnt=0;\ miso_err_cnt=0;\ hw_reset_err_cnt=0;\ counter =0;\ bcn_flag=0;\ bbram_flag=0;\ stop_transmission=false;\ } int segment_len=sizeof(Segment); int EOS_len=sizeof(EOS); int total_no_of_segments=240; int no_of_segments=0; bool EOS_f=false; bool segment_f=true; #define restart_adf {\ gCS_ADF=0;\ spi.write(CMD_PHY_ON);\ gCS_ADF=1;\ wait(2);\ Adf_data_counter = 0;\ EOS_f=0;\ segment_f=1;\ // printf("seg=%d\n",no_of_segments);\ gCS_ADF=0;\ spi.write(CMD_PHY_TX);\ gCS_ADF=1;\ } int err_arr[64]; bool bbram_err=false; int err_idx=-1; int err[64]; #define bbram_check gCS_ADF=0;\ for(int i=0;i<64;i++){\ err_arr[i]=0;\ }\ for(int i=0;i<64;i++){\ err[i]=0;\ }\ bbram_err=false;\ gCS_ADF=0;\ spi.write(0x39);\ spi.write(0x00);\ spi.write(0xFF);\ for(int i=0;i<64;i++){\ err_arr[i]=spi.write(0xFF);\ if(err_arr[i]!=bbram_buffer[i+2]){\ err[i]=1;\ bbram_err=true;\ }\ }\ gCS_ADF=1;\ if(!bbram_err)\ gPC.printf("BBRAM verified \r\n");\ else\ gPC.printf("BBRAM error \r\n");\ bool tx_loop=1; //========================OLD Transmit data========================================================================================= void transmitdata(){ // copy the data to be transmitted to bufer_112 for(int i=0;i<112;i++){ buffer_112[i]=Adf_data[Adf_data_counter]; Adf_data_counter++; if(data_length==Adf_data_counter)Adf_data_counter = 0; if(data_length==Adf_data_counter){ stop_transmission= true; Adf_data_counter = 0; break; } } } //======================================================NEW TRANSMIT DATA======================================= /* void transmitdata() // copy the data to be transmitted to bufer_112 { tx_loop=true; for(int i=0; ((i<112)&&(tx_loop==1)); i++) { if(segment_f) { buffer_112[i]=Adf_data[Adf_data_counter]; Adf_data_counter++; if(Adf_data_counter==segment_len) { no_of_segments++; Adf_data_counter=0; if(no_of_segments%12==0) { segment_f=0; EOS_f=1; } } } if(EOS_f) { buffer_112[i]=Adf_data[Adf_data_counter]; Adf_data_counter++; if(Adf_data_counter==EOS_len) { segment_f=1; EOS_f=0; Adf_data_counter=0; restart_adf; } } } } */ #define PRNT_ONCE {\ printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\ }\ #define bbram_write {\ gCS_ADF=0;\ spi.write(0xB0);\ wait_us(300);\ gCS_ADF=1;\ gCS_ADF=0;\ for(int i=0;i<66;i++){\ spi.write(bbram_buffer[i]);\ }\ gCS_ADF=1;\ } //------------------------------------------------------------------------ // state checking functions //bool assrt_phy_off( int, int, int); //bool assrt_phy_on( int,int,int); //bool assrt_phy_tx(int,int,int); #define check_status {\ unsigned char stat=0;\ gCS_ADF=0;\ spi.write(0xFF);\ stat = spi.write(0xFF);\ gCS_ADF=1;\ status = stat;\ } /*CMD_VAR*/ bool cmd_bit=true; bool cmd_err_flag=false; unsigned char command = 0x00; #define CMD(command) {\ cmd_err_cnt=0;\ cmd_err_flag=false;\ while(cmd_err_cnt<3) {\ check_status;\ cmd_bit=status&0x20;\ if(cmd_bit) {\ gCS_ADF=0;\ spi.write(command);\ gCS_ADF=1;\ break;\ } else {\ wait_us(5);\ cmd_err_cnt++;\ }\ }\ if(cmd_err_cnt==3) {\ cmd_err_flag=true;\ }\ }\ // all three arguments are int\ #define assrt_phy_off {\ int state_err_cnt = 0;\ CMD(CMD_PHY_OFF);\ if(cmd_err_flag){\ temp_return=1;\ }\ else{\ for(int i = 0 ; i < 40 ;i++){\ CMD(CMD_PHY_OFF);\ check_status;\ if(status == PHY_OFF){\ temp_return = 0;\ break;\ }\ else if(state_err_cnt>THRS){\ temp_return = 1;\ break;\ }\ else {\ wait_ms(1);\ }\ }\ }\ }\ bool hardware_reset(int bcn_call) { for(int i= 0; i < 2 ; i++) { gCS_ADF=0; spi.write(CMD_HW_RESET); gCS_ADF=1; wait_ms(2);// Typically 1 ms int count=0; temp_return = 0; while(count<10 && miso_err_cnt<10) { if(MISO_PIN) { // assrt_phy_off; /*asseert_phyoff Starts**/ {\ int state_err_cnt = 0;\ CMD(CMD_PHY_OFF);\ if(cmd_err_flag){\ temp_return=1;\ }\ else{\ for(int i = 0 ; i < 40 ;i++){\ CMD(CMD_PHY_OFF);\ check_status;\ if(status == PHY_OFF){\ temp_return = 0;\ break;\ }\ else if(state_err_cnt>THRS){\ temp_return = 1;\ break;\ }\ else {\ wait_ms(1);\ }\ }\ }\ }\ /*Assert_phy_off_ends*/ if(!temp_return){ return 0; } count++; } else { wait_us(50); miso_err_cnt++; } } } return 1; } //for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx. //---------------------------------------------------------------------------- /* # define initiate {\ gCS_ADF=0;\ spi.write(0xFF);\ spi.write(0xFF);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x08);\ spi.write(0x14);\ spi.write(0xFF);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x08);\ spi.write(0x15);\ spi.write(0xFF);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x09);\ spi.write(0x24);\ spi.write(0x20);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x09);\ spi.write(0x37);\ spi.write(0xE0);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x09);\ spi.write(0x36);\ spi.write(0x70);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x09);\ spi.write(0x39);\ spi.write(0x10);\ gCS_ADF=1;\ }*/ unsigned char temp; bool reg_err; int reg_err_cnt; #define REG_ERR_THRS 5 #define reg_check(addr1,addr2,reg_val)\ {\ gCS_ADF=0;\ reg_err=false;\ spi.write(addr1);\ spi.write(addr2);\ spi.write(0xFF);\ temp = spi.write(0xFF);\ if(temp==reg_val)\ reg_err = false;\ else\ reg_err=true;\ gCS_ADF=1;\ }\ //======================================================== /*# define initiate {\ gCS_ADF=0;\ spi.write(0xFF);\ spi.write(0xFF);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x08);\ spi.write(0x14);\ spi.write(0xFF);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x08);\ spi.write(0x15);\ spi.write(0xFF);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x09);\ spi.write(0x24);\ spi.write(0x20);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x09);\ spi.write(0x37);\ spi.write(0xE0);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x09);\ spi.write(0x36);\ spi.write(0x70);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0x09);\ spi.write(0x39);\ spi.write(0x10);\ gCS_ADF=1;\ }*/ //======================================================== #define initiate {\ gCS_ADF=0;\ spi.write(0xFF);\ spi.write(0xFF);\ gCS_ADF=1;\ reg_err=true;\ for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\ gCS_ADF=0;\ spi.write(0x08);\ spi.write(0x14);\ spi.write(TRANSMIT_LEN_1);\ gCS_ADF=1;\ reg_check(0x28,0x14,TRANSMIT_LEN_1);\ }\ if(reg_err)\ printf("Reg_err_ignored %x \r\n",(int)temp);\ else\ printf("reg written successful %x \r\n",(int)temp);\ reg_err=true;\ for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\ gCS_ADF=0;\ spi.write(0x08);\ spi.write(0x15);\ spi.write(TRANSMIT_LEN_2);\ gCS_ADF=1;\ reg_check(0x28,0x15,TRANSMIT_LEN_2);\ }\ if(reg_err)\ printf("Reg_err_ignored %x \r\n",(int)temp);\ else\ printf("reg written successful %x \r\n",(int)temp);\ }\ bool rolling_buffer_settings_error=true; bool bbram_write_success=true; int bbram_err_cnt=0; int rbp_err_cnt=0; bool reset_flag=false; #define RBP_THRS 4 bool quit_configuration=false; bool power_reset_flag=false; unsigned int power_reset_count=0; bool Configuration_done=false; #define HW_THRS 2 //======================================OLD Write Data=================================== /* #define write_data {\ counter++;\ gCS_ADF=0;\ spi.write(0x0B);\ spi.write(0x36);\ spi.write(0xFF);\ gCS_ADF=1;\ gCS_ADF=0;\ if(buffer_state){\ spi.write(0x18);\ spi.write(0x20);\ for(unsigned char i=0; i<112;i++){\ spi.write(buffer_112[i]);\ }\ }\ else{\ spi.write(0x18);\ spi.write(0x90);\ for(unsigned char i=0; i<112;i++){\ spi.write(buffer_112[i]);\ }\ }\ gCS_ADF=1;\ buffer_state = !buffer_state;\ }*/ void send_tm_from_SD_card() { } //========================================================================== //==================NEW_WRITE_DATA_VARs============================================ //unsigned int counter =0; bool data_err= false; unsigned char temp_byte=0x00; unsigned char data_err1[112]; unsigned char data_err_cnt=0; unsigned int byte_count =0; #define DATA_ERR_THRS 20 bool last_buffer = 0; //#define write_data data_err_cnt=0; //==================NEW_WRITE_DATA============================================ bool finish_write_data=0; #define write_data {\ counter++;\ gCS_ADF=0;\ spi.write(0x0B);\ spi.write(0x36);\ spi.write(0xFF);\ gCS_ADF=1;\ data_err_cnt=0;\ data_err=true;\ while(data_err && (data_err_cnt<DATA_ERR_THRS)){\ gCS_ADF=0;\ if(buffer_state){\ spi.write(0x18);\ spi.write(0x20);\ for(unsigned char i=0; i<112;i++){\ if(bypass_adf)\ gPC.putc(buffer_112[i]);\ else\ spi.write(buffer_112[i]);\ /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\ }\ }\ else{\ spi.write(0x18);\ spi.write(0x90);\ for(unsigned char i=0; i<112;i++){\ if(bypass_adf)\ gPC.putc(buffer_112[i]);\ else\ spi.write(buffer_112[i]);\ /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\ }\ }\ gCS_ADF=1;\ wait_us(5);\ data_err=false;\ gCS_ADF=0;\ spi.write(0x38);\ if(buffer_state){\ spi.write(0x20);\ }\ else{\ spi.write(0x90);\ }\ spi.write(0xFF);\ for(unsigned char i=0; i<112;i++){\ temp_byte=spi.write(0xFF);\ if(buffer_112[i]!=temp_byte){\ data_err1[i]=1;\ data_err=true;\ }\ }\ gCS_ADF=1;\ /*SPI_mutex.unlock();*/\ if(data_err==false){\ buffer_state = !buffer_state;\ }\ data_err_cnt++;\ if(last_buffer){\ finish_write_data = true;\ /*gPC.puts("adf_off\r\n");*/\ }\ }\ } //============================================================== /*void check() { check_status; //remove me printf("I 0x%X\r\n",(int)status);//Remove me if(IRQ) { printf("det\r\n"); // if(1){ if(!ADF_off) { // gCOM_MNG_TMTC_THREAD->signal_set(signal); if(stop_transmission) { write_data; ADF_off=true; } else { write_data; transmitdata(); } } else { wait_ms(20); // ticker.detach(); gCS_ADF=0; spi.write(0xB1); gCS_ADF=1; gPC.puts("transmission done\r\n"); // cout<<counter<<endl; loop_on=false; } } }*/ //=============NEW CHECK VAriables=================================================================== bool data_irq_err=0; //================================================================================ void check() { check_status; //remove me printf("I 0x%X\r\n",(int)status);//Remove me if(IRQ) { printf("det\r\n"); // if(1){ if(!ADF_off) { // gCOM_MNG_TMTC_THREAD->signal_set(signal); if(stop_transmission) { write_data; ADF_off=true; } else { write_data; transmitdata(); } } else { wait_ms(20); // ticker.detach(); gCS_ADF=0; spi.write(0xB1); gCS_ADF=1; gPC.puts("transmission done\r\n"); // cout<<counter<<endl; loop_on=false; } } else{ if(T.read_us()>98000){\ data_irq_err=true;\ CMD(CMD_PHY_ON); gPC.printf("Data_error_detected"); }\ }\ } //================================================================================= //bool bypass_adf = false; //================================================================================ //void check(){ //if(IRQ || bypass_adf){\ // if(finish_write_data){\ // if(ADF_off){\ // SPI_mutex.lock();\ // gCS_ADF=0;\ // spi.write(0xB1);\ // data_tx_success=true;\ // gCS_ADF=1;\ // SPI_mutex.unlock();\ // loop_on = false;\ // gPC.puts("Transmission done\r\n");\ // gLEDR = 1;\ // }\ // else{\ // ADF_off = true;\ // }\ // }else{\ // gLEDR = !gLEDR;\ // write_data;\ // if(sent_tmfrom_SDcard)\ // send_tm_from_SD_card_fun();\ // else snd_tm.transmit_data(buffer_112,&last_buffer);\ // }\ // T.reset();\ // }\ // else{\ // if(T.read_us()>98000){\ // data_irq_err=true;\ // CMD(CMD_PHY_ON);\ // break;\ // }\ // }\ // } //================================================================================/= // //#define send_data {\ // gCS_ADF=0;\ // spi.write(0xBB);\ // gCS_ADF=1;\ // gCS_ADF=0;\ // spi.write(0xFF);\ // spi.write(0xFF);\ // gCS_ADF=1;\ // if(sent_tmfrom_SDcard){\ // send_tm_from_SD_card();\ // }else{\ // transmitdata();\ // }\ // write_data;\ // if(sent_tmfrom_SDcard){\ // send_tm_from_SD_card();\ // }else{\ // transmitdata();\ // }\ // write_data;\ // if(sent_tmfrom_SDcard){\ // send_tm_from_SD_card();\ // }else{\ // transmitdata();\ // }\ // gCS_ADF=0;\ // spi.write(0xB1);\ // gCS_ADF=1;\ // wait_us(300);\ // gCS_ADF=0;\ // spi.write(0xFF);\ // spi.write(0xFF);\ // gCS_ADF=1;\ // gCS_ADF=0;\ // spi.write(0xB5);\ // gCS_ADF=1;\ // wait_us(300);\ // gCS_ADF=0;\ // spi.write(0xFF);\ // spi.write(0xFF);\ // gCS_ADF=1;\ // ticker.attach_us(&check,32000);\ //} #define send_data {\ gCS_ADF=0;\ spi.write(0xBB);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0xFF);\ spi.write(0xFF);\ gCS_ADF=1;\ if(sent_tmfrom_SDcard){\ }\ else{\ transmitdata();\ }\ write_data;\ if(sent_tmfrom_SDcard){\ }else{\ transmitdata();\ }\ write_data;\ if(sent_tmfrom_SDcard){\ }else{\ transmitdata();\ }\ gCS_ADF=0;\ spi.write(0xB1);\ gCS_ADF=1;\ wait_us(300);\ gCS_ADF=0;\ spi.write(0xFF);\ spi.write(0xFF);\ gCS_ADF=1;\ gCS_ADF=0;\ spi.write(0xB5);\ gCS_ADF=1;\ wait_us(300);\ gCS_ADF=0;\ spi.write(0xFF);\ spi.write(0xFF);\ gCS_ADF=1;\ } #define initial_adf_check {\ bool Configuration_Done=false;\ quit_configuration=false;\ bool reset_flag1 = 0;\ bool flag = false;\ while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\ while((bbram_err_cnt<2)&&(quit_configuration==false)){\ /*assrt_phy_off;*/\ /*Assrt_phy_off Begin*/\ {\ int state_err_cnt = 0;\ CMD(CMD_PHY_OFF);\ if(cmd_err_flag){\ temp_return=1;\ }\ else{\ for(int i = 0 ; i < 40 ;i++){\ CMD(CMD_PHY_OFF);\ check_status;\ if(status == PHY_OFF){\ temp_return = 0;\ break;\ }\ else if(state_err_cnt>THRS){\ temp_return = 1;\ break;\ }\ else {\ wait_ms(1);\ }\ }\ }\ }\ /*Assrt_phy_off end*/\ reset_flag1=temp_return;\ if(!reset_flag1){\ bbram_write;\ while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\ bbram_check;\ if(bbram_err==0){\ bbram_write_success=true;\ bbram_err_cnt=0;\ initiate;\ if(reg_err){\ rbp_err_cnt++;\ }\ else{\ rbp_err_cnt=0;\ gPC.printf("NO Reg err\r\n");\ CMD(CMD_CONFIG_DEV);\ if(cmd_err_flag){\ reset_flag=1;\ gPC.printf("CMD ERR\r\n");\ }\ else{\ reset_flag=0;\ gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\ quit_configuration=true;\ }\ }\ }\ else{\ bbram_write_success=false;\ bbram_err_cnt++;\ break;\ }\ }\ }\ else{\ break;\ }\ }\ if(reset_flag1){\ hardware_reset(0);\ hw_reset_err_cnt++;\ gPC.puts("Resetting hardware\r\n");\ }\ }\ if(hw_reset_err_cnt==HW_THRS){\ power_reset_flag=1;\ power_reset_count++;\ }\ else{\ Configuration_Done=true;\ gPC.printf("Configuration_Done\n");\ }\ } void adf_not_SDcard() { buffer_state = true; // last_buffer = false; loop_on = true; ADF_off = false; sent_tmfrom_SDcard = false; // signal = COM_MNG_TMTC_SIGNAL_ADF_NSD; initial_adf_check; // gPC.puts("initial adf check\r\n"); // initiate; gPC.puts("Config_part done\r\n"); send_data; // gPC.puts("Inside adf transmission\r\n"); // ADF_non_responsive_timeout.attach(&ADF_non_responsive_fun, 10); } int main() { RF_SW_CNTRL_TX = 1; wait_ms(25); RF_SW_CNTRL_TX = 0; COM_OC_SW = 1; while(1) { reset_flags; gPC.puts("welcome to adf test\n"); spi.format(8,0); spi.frequency(1000000); data_length = sizeof(Adf_data); // cout<<data_length<<endl; adf_not_SDcard(); //PA MCR level //gCS_ADF=0; //spi.write(0x1B);//1B0735 //spi.write(0x07); //spi.write(0x3B);//low power = 0x20, high power = 0x3B; //gCS_ADF=1; CMD(CMD_PHY_TX); wait_us(2000); while(loop_on){ led = !led; // toggle led wait_us(20); check(); if(data_irq_err){ break;\ } } wait(0.5); gPC.printf("in WHILE\n"); // wait(1); } }