Code for transmitting through adf. Directly give it the physical layer data to be transmitted.a

Dependencies:   mbed-rtos mbed

Fork of ADF_test by shubham c

Committer:
ee12b079
Date:
Mon Jan 02 12:53:13 2017 +0000
Revision:
23:2f89d47b862c
Parent:
21:bae83ef7ac5f
Code updated for power testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
krishanprajapat 1:0b0579f5bbef 1 //Working for ISR = 2 28/12/2015 7:02 PM
krishanprajapat 5:0f1594e416ae 2 //working for ISR = 10 29/12/2015 10:43 AM
ee12b079 17:f410d4327247 3 /*remove me*/
ee12b079 17:f410d4327247 4 #define bypass_adf 0
ee12b079 17:f410d4327247 5 /**/
krishanprajapat 1:0b0579f5bbef 6
ee12b079 17:f410d4327247 7 #define START_ADDRESS 0x020;
ee12b079 17:f410d4327247 8 #define MISO_PIN PTE3
ee12b079 17:f410d4327247 9 /**************Defining Counter Limits**************/
ee12b079 17:f410d4327247 10 #define THRS 20
ee12b079 17:f410d4327247 11 #define STATE_ERR_THRS 20
ee12b079 17:f410d4327247 12 #define PHY_OFF_EXEC_TIME 300
ee12b079 17:f410d4327247 13 #define PHY_ON_EXEC_TIME 300
ee12b079 17:f410d4327247 14 #define PHY_TX_EXEC_TIME 600
ee12b079 17:f410d4327247 15 /******DEFINING COMMANDS*********/
ee12b079 17:f410d4327247 16 #define CMD_HW_RESET 0xC8
ee12b079 17:f410d4327247 17 #define CMD_PHY_ON 0xB1
ee12b079 17:f410d4327247 18 #define CMD_PHY_OFF 0xB0
ee12b079 17:f410d4327247 19 #define CMD_PHY_TX 0xB5
ee12b079 17:f410d4327247 20 #define CMD_CONFIG_DEV 0xBB
ee12b079 17:f410d4327247 21 /**STATES**/
ee12b079 17:f410d4327247 22 //=======================
ee12b079 17:f410d4327247 23 #define PHY_OFF 0xB1
ee12b079 17:f410d4327247 24 #define PHY_ON 0xB2
ee12b079 17:f410d4327247 25 #define PHY_TX 0xB4
ee12b079 17:f410d4327247 26 #define BUSY 0x00
ee12b079 17:f410d4327247 27 //===================================================
krishanprajapat 0:578d0f87988f 28
krishanprajapat 0:578d0f87988f 29 //without reset feature , with state checks.
krishanprajapat 0:578d0f87988f 30 #include<iostream>
krishanprajapat 0:578d0f87988f 31 #include"mbed.h"
krishanprajapat 0:578d0f87988f 32 #define ADF_IRQ PTA14
krishanprajapat 0:578d0f87988f 33 #define SPI_MOSI PTE1
krishanprajapat 0:578d0f87988f 34 #define SPI_MISO PTE3
krishanprajapat 0:578d0f87988f 35 #define SPI_CLK PTE2
krishanprajapat 0:578d0f87988f 36 #define SPI_CS_ADF PTA15
ee12b079 17:f410d4327247 37 /*Rolling_Buffer_Parameters*/
ee12b079 17:f410d4327247 38
ee12b079 17:f410d4327247 39 #define TRANSMIT_LEN_1 0xFF
ee12b079 17:f410d4327247 40 #define TRANSMIT_LEN_2 0xFF
ee12b079 17:f410d4327247 41 /***/
ee12b079 17:f410d4327247 42 Timer T;
krishanprajapat 0:578d0f87988f 43 Serial gPC( USBTX, USBRX );
krishanprajapat 0:578d0f87988f 44 //gPC.baud(1200);
krishanprajapat 0:578d0f87988f 45 InterruptIn IRQ(ADF_IRQ);
ee12b079 17:f410d4327247 46 //Ticker ticker;
ee12b079 17:f410d4327247 47 SPI spi(PTE1, PTE3, PTE2);
ee12b079 23:2f89d47b862c 48 DigitalOut RF_SW_CNTRL_BCN(PTB17);
ee12b079 23:2f89d47b862c 49 DigitalOut RF_SW_CNTRL_TX(PTB7);
ee12b079 21:bae83ef7ac5f 50 DigitalOut sys_pwr_rst (PTA16,0);//For eps
krishanprajapat 0:578d0f87988f 51 DigitalOut gCS_ADF(SPI_CS_ADF);
krishanprajapat 0:578d0f87988f 52 DigitalOut led(LED_RED);
krishanprajapat 0:578d0f87988f 53 unsigned int Adf_data_counter=0;
krishanprajapat 0:578d0f87988f 54 unsigned char status =0;
krishanprajapat 0:578d0f87988f 55 unsigned int cmd_err_cnt=0;
krishanprajapat 3:bac82a182b28 56 unsigned int data_length;
krishanprajapat 0:578d0f87988f 57 unsigned int state_err_cnt=0;
krishanprajapat 0:578d0f87988f 58 unsigned int miso_err_cnt=0;
krishanprajapat 0:578d0f87988f 59 unsigned int hw_reset_err_cnt=0;
krishanprajapat 3:bac82a182b28 60 unsigned int counter =0;
ee12b079 17:f410d4327247 61 bool temp_return = 0;
krishanprajapat 0:578d0f87988f 62 bool bcn_flag=0;
krishanprajapat 0:578d0f87988f 63 bool bbram_flag=0;
ee12b079 20:2cfca61aafcb 64 DigitalOut COM_OC_SW(PTB3);
krishanprajapat 0:578d0f87988f 65 bool stop_transmission=false;
krishanprajapat 0:578d0f87988f 66 bool sent_tmfrom_SDcard;
krishanprajapat 0:578d0f87988f 67 bool loop_on;
krishanprajapat 0:578d0f87988f 68 bool ADF_off;
krishanprajapat 0:578d0f87988f 69 bool buffer_state;
krishanprajapat 0:578d0f87988f 70 uint8_t signal = 0x00;
ee12b079 17:f410d4327247 71
ee12b079 17:f410d4327247 72 //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};
ee12b079 21:bae83ef7ac5f 73 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*/0x67/*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};
ee12b079 17:f410d4327247 74 //unsigned char Adf_data[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
ee12b079 17:f410d4327247 75 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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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};
ee12b079 17:f410d4327247 76
ee12b079 17:f410d4327247 77 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};
ee12b079 17:f410d4327247 78 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};
ee12b079 17:f410d4327247 79 unsigned char max_segment = (65535 - 120)/(48 + 40*134);//12
ee12b079 17:f410d4327247 80
ee12b079 17:f410d4327247 81
ee12b079 17:f410d4327247 82
ee12b079 17:f410d4327247 83
krishanprajapat 0:578d0f87988f 84
krishanprajapat 0:578d0f87988f 85 unsigned char buffer_112[112];
krishanprajapat 0:578d0f87988f 86 //int initialise_card();
krishanprajapat 0:578d0f87988f 87 //int disk_initialize();
krishanprajapat 0:578d0f87988f 88
ee12b079 17:f410d4327247 89
ee12b079 17:f410d4327247 90 #define reset_flags {\
ee12b079 14:eee578d96cfe 91 Adf_data_counter=0;\
ee12b079 14:eee578d96cfe 92 status =0;\
ee12b079 14:eee578d96cfe 93 cmd_err_cnt=0;\
ee12b079 14:eee578d96cfe 94 data_length;\
ee12b079 14:eee578d96cfe 95 state_err_cnt=0;\
ee12b079 14:eee578d96cfe 96 miso_err_cnt=0;\
ee12b079 14:eee578d96cfe 97 hw_reset_err_cnt=0;\
ee12b079 14:eee578d96cfe 98 counter =0;\
ee12b079 14:eee578d96cfe 99 bcn_flag=0;\
ee12b079 14:eee578d96cfe 100 bbram_flag=0;\
ee12b079 14:eee578d96cfe 101 stop_transmission=false;\
ee12b079 14:eee578d96cfe 102 }
ee12b079 17:f410d4327247 103 int segment_len=sizeof(Segment);
ee12b079 17:f410d4327247 104 int EOS_len=sizeof(EOS);
ee12b079 17:f410d4327247 105 int total_no_of_segments=240;
ee12b079 17:f410d4327247 106 int no_of_segments=0;
ee12b079 17:f410d4327247 107 bool EOS_f=false;
ee12b079 17:f410d4327247 108 bool segment_f=true;
ee12b079 17:f410d4327247 109 #define restart_adf {\
ee12b079 17:f410d4327247 110 gCS_ADF=0;\
ee12b079 17:f410d4327247 111 spi.write(CMD_PHY_ON);\
ee12b079 17:f410d4327247 112 gCS_ADF=1;\
ee12b079 17:f410d4327247 113 wait(2);\
ee12b079 17:f410d4327247 114 Adf_data_counter = 0;\
ee12b079 17:f410d4327247 115 EOS_f=0;\
ee12b079 17:f410d4327247 116 segment_f=1;\
ee12b079 17:f410d4327247 117 // printf("seg=%d\n",no_of_segments);\
ee12b079 17:f410d4327247 118 gCS_ADF=0;\
ee12b079 17:f410d4327247 119 spi.write(CMD_PHY_TX);\
ee12b079 17:f410d4327247 120 gCS_ADF=1;\
ee12b079 17:f410d4327247 121 }
ee12b079 17:f410d4327247 122 int err_arr[64];
ee12b079 17:f410d4327247 123 bool bbram_err=false;
ee12b079 17:f410d4327247 124 int err_idx=-1;
ee12b079 17:f410d4327247 125 int err[64];
ee12b079 17:f410d4327247 126 #define bbram_check gCS_ADF=0;\
ee12b079 17:f410d4327247 127 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 128 err_arr[i]=0;\
ee12b079 17:f410d4327247 129 }\
ee12b079 17:f410d4327247 130 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 131 err[i]=0;\
ee12b079 17:f410d4327247 132 }\
ee12b079 17:f410d4327247 133 bbram_err=false;\
ee12b079 17:f410d4327247 134 gCS_ADF=0;\
ee12b079 17:f410d4327247 135 spi.write(0x39);\
ee12b079 17:f410d4327247 136 spi.write(0x00);\
ee12b079 17:f410d4327247 137 spi.write(0xFF);\
ee12b079 17:f410d4327247 138 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 139 err_arr[i]=spi.write(0xFF);\
ee12b079 17:f410d4327247 140 if(err_arr[i]!=bbram_buffer[i+2]){\
ee12b079 17:f410d4327247 141 err[i]=1;\
ee12b079 17:f410d4327247 142 bbram_err=true;\
ee12b079 17:f410d4327247 143 }\
ee12b079 17:f410d4327247 144 }\
ee12b079 17:f410d4327247 145 gCS_ADF=1;\
ee12b079 17:f410d4327247 146 if(!bbram_err)\
ee12b079 17:f410d4327247 147 gPC.printf("BBRAM verified \r\n");\
ee12b079 17:f410d4327247 148 else\
ee12b079 17:f410d4327247 149 gPC.printf("BBRAM error \r\n");\
ee12b079 17:f410d4327247 150
ee12b079 17:f410d4327247 151
ee12b079 17:f410d4327247 152 bool tx_loop=1;
ee12b079 17:f410d4327247 153 //========================OLD Transmit data=========================================================================================
krishanprajapat 0:578d0f87988f 154 void transmitdata(){ // copy the data to be transmitted to bufer_112
krishanprajapat 0:578d0f87988f 155 for(int i=0;i<112;i++){
krishanprajapat 0:578d0f87988f 156 buffer_112[i]=Adf_data[Adf_data_counter];
krishanprajapat 0:578d0f87988f 157 Adf_data_counter++;
krishanprajapat 3:bac82a182b28 158 if(data_length==Adf_data_counter){
krishanprajapat 0:578d0f87988f 159 stop_transmission= true;
ee12b079 14:eee578d96cfe 160 Adf_data_counter = 0;
krishanprajapat 0:578d0f87988f 161 break;
krishanprajapat 0:578d0f87988f 162 }
krishanprajapat 0:578d0f87988f 163 }
krishanprajapat 0:578d0f87988f 164 }
krishanprajapat 0:578d0f87988f 165
ee12b079 17:f410d4327247 166
ee12b079 17:f410d4327247 167
ee12b079 17:f410d4327247 168 //======================================================NEW TRANSMIT DATA=======================================
ee12b079 17:f410d4327247 169 /*
ee12b079 17:f410d4327247 170 void transmitdata() // copy the data to be transmitted to bufer_112
ee12b079 17:f410d4327247 171 {
ee12b079 17:f410d4327247 172 tx_loop=true;
ee12b079 17:f410d4327247 173 for(int i=0; ((i<112)&&(tx_loop==1)); i++) {
ee12b079 17:f410d4327247 174 if(segment_f) {
ee12b079 17:f410d4327247 175 buffer_112[i]=Adf_data[Adf_data_counter];
ee12b079 17:f410d4327247 176 Adf_data_counter++;
ee12b079 17:f410d4327247 177
ee12b079 17:f410d4327247 178 if(Adf_data_counter==segment_len) {
ee12b079 17:f410d4327247 179 no_of_segments++;
ee12b079 17:f410d4327247 180 Adf_data_counter=0;
ee12b079 17:f410d4327247 181 if(no_of_segments%12==0) {
ee12b079 17:f410d4327247 182 segment_f=0;
ee12b079 17:f410d4327247 183 EOS_f=1;
ee12b079 17:f410d4327247 184 }
ee12b079 17:f410d4327247 185 }
ee12b079 17:f410d4327247 186 }
ee12b079 17:f410d4327247 187 if(EOS_f) {
ee12b079 17:f410d4327247 188 buffer_112[i]=Adf_data[Adf_data_counter];
ee12b079 17:f410d4327247 189 Adf_data_counter++;
ee12b079 17:f410d4327247 190 if(Adf_data_counter==EOS_len) {
ee12b079 17:f410d4327247 191 segment_f=1;
ee12b079 17:f410d4327247 192 EOS_f=0;
ee12b079 17:f410d4327247 193 Adf_data_counter=0;
ee12b079 17:f410d4327247 194 restart_adf;
ee12b079 17:f410d4327247 195 }
ee12b079 17:f410d4327247 196 }
ee12b079 17:f410d4327247 197
ee12b079 17:f410d4327247 198 }
ee12b079 17:f410d4327247 199 }
ee12b079 17:f410d4327247 200 */
ee12b079 17:f410d4327247 201 #define PRNT_ONCE {\
ee12b079 17:f410d4327247 202 printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\
ee12b079 17:f410d4327247 203 }\
ee12b079 17:f410d4327247 204
krishanprajapat 0:578d0f87988f 205 #define bbram_write {\
krishanprajapat 0:578d0f87988f 206 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 207 spi.write(0xB0);\
krishanprajapat 0:578d0f87988f 208 wait_us(300);\
krishanprajapat 0:578d0f87988f 209 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 210 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 211 for(int i=0;i<66;i++){\
krishanprajapat 0:578d0f87988f 212 spi.write(bbram_buffer[i]);\
krishanprajapat 0:578d0f87988f 213 }\
krishanprajapat 0:578d0f87988f 214 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 215 }
krishanprajapat 0:578d0f87988f 216 //------------------------------------------------------------------------
krishanprajapat 0:578d0f87988f 217 // state checking functions
krishanprajapat 0:578d0f87988f 218 //bool assrt_phy_off( int, int, int);
krishanprajapat 0:578d0f87988f 219 //bool assrt_phy_on( int,int,int);
krishanprajapat 0:578d0f87988f 220 //bool assrt_phy_tx(int,int,int);
krishanprajapat 0:578d0f87988f 221
krishanprajapat 0:578d0f87988f 222 #define check_status {\
krishanprajapat 0:578d0f87988f 223 unsigned char stat=0;\
krishanprajapat 0:578d0f87988f 224 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 225 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 226 stat = spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 227 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 228 status = stat;\
krishanprajapat 0:578d0f87988f 229 }
krishanprajapat 0:578d0f87988f 230
ee12b079 17:f410d4327247 231 /*CMD_VAR*/
ee12b079 17:f410d4327247 232 bool cmd_bit=true;
ee12b079 17:f410d4327247 233 bool cmd_err_flag=false;
ee12b079 17:f410d4327247 234 unsigned char command = 0x00;
ee12b079 17:f410d4327247 235 #define CMD(command) {\
ee12b079 17:f410d4327247 236 cmd_err_cnt=0;\
ee12b079 17:f410d4327247 237 cmd_err_flag=false;\
ee12b079 17:f410d4327247 238 while(cmd_err_cnt<3) {\
krishanprajapat 0:578d0f87988f 239 check_status;\
ee12b079 17:f410d4327247 240 cmd_bit=status&0x20;\
ee12b079 17:f410d4327247 241 if(cmd_bit) {\
ee12b079 17:f410d4327247 242 gCS_ADF=0;\
ee12b079 17:f410d4327247 243 spi.write(command);\
ee12b079 17:f410d4327247 244 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 245 break;\
ee12b079 17:f410d4327247 246 } else {\
ee12b079 17:f410d4327247 247 wait_us(5);\
krishanprajapat 0:578d0f87988f 248 cmd_err_cnt++;\
krishanprajapat 0:578d0f87988f 249 }\
krishanprajapat 0:578d0f87988f 250 }\
ee12b079 17:f410d4327247 251 if(cmd_err_cnt==3) {\
ee12b079 17:f410d4327247 252 cmd_err_flag=true;\
ee12b079 17:f410d4327247 253 }\
ee12b079 17:f410d4327247 254 }\
ee12b079 17:f410d4327247 255 // all three arguments are int\
ee12b079 17:f410d4327247 256 #define assrt_phy_off {\
ee12b079 17:f410d4327247 257 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 258 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 259 if(cmd_err_flag){\
ee12b079 17:f410d4327247 260 temp_return=1;\
ee12b079 17:f410d4327247 261 }\
ee12b079 17:f410d4327247 262 else{\
ee12b079 17:f410d4327247 263 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 264 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 265 check_status;\
ee12b079 17:f410d4327247 266 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 267 temp_return = 0;\
ee12b079 17:f410d4327247 268 break;\
ee12b079 17:f410d4327247 269 }\
ee12b079 17:f410d4327247 270 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 271 temp_return = 1;\
ee12b079 17:f410d4327247 272 break;\
ee12b079 17:f410d4327247 273 }\
ee12b079 17:f410d4327247 274 else {\
ee12b079 17:f410d4327247 275 wait_ms(1);\
ee12b079 17:f410d4327247 276 }\
ee12b079 17:f410d4327247 277 }\
ee12b079 17:f410d4327247 278 }\
ee12b079 17:f410d4327247 279 }\
krishanprajapat 0:578d0f87988f 280
krishanprajapat 0:578d0f87988f 281
ee12b079 17:f410d4327247 282 bool hardware_reset(int bcn_call)
ee12b079 17:f410d4327247 283 {
ee12b079 17:f410d4327247 284 for(int i= 0; i < 2 ; i++) {
krishanprajapat 0:578d0f87988f 285 gCS_ADF=0;
krishanprajapat 0:578d0f87988f 286 spi.write(CMD_HW_RESET);
krishanprajapat 0:578d0f87988f 287 gCS_ADF=1;
krishanprajapat 0:578d0f87988f 288 wait_ms(2);// Typically 1 ms
krishanprajapat 0:578d0f87988f 289 int count=0;
ee12b079 17:f410d4327247 290 temp_return = 0;
ee12b079 17:f410d4327247 291 while(count<10 && miso_err_cnt<10) {
ee12b079 17:f410d4327247 292 if(MISO_PIN) {
ee12b079 17:f410d4327247 293 // assrt_phy_off;
ee12b079 17:f410d4327247 294 /*asseert_phyoff Starts**/
ee12b079 17:f410d4327247 295 {\
ee12b079 17:f410d4327247 296 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 297 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 298 if(cmd_err_flag){\
ee12b079 17:f410d4327247 299 temp_return=1;\
ee12b079 17:f410d4327247 300 }\
ee12b079 17:f410d4327247 301 else{\
ee12b079 17:f410d4327247 302 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 303 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 304 check_status;\
ee12b079 17:f410d4327247 305 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 306 temp_return = 0;\
ee12b079 17:f410d4327247 307 break;\
ee12b079 17:f410d4327247 308 }\
ee12b079 17:f410d4327247 309 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 310 temp_return = 1;\
ee12b079 17:f410d4327247 311 break;\
ee12b079 17:f410d4327247 312 }\
ee12b079 17:f410d4327247 313 else {\
ee12b079 17:f410d4327247 314 wait_ms(1);\
ee12b079 17:f410d4327247 315 }\
ee12b079 17:f410d4327247 316 }\
ee12b079 17:f410d4327247 317 }\
ee12b079 17:f410d4327247 318 }\
ee12b079 17:f410d4327247 319 /*Assert_phy_off_ends*/
ee12b079 17:f410d4327247 320
ee12b079 17:f410d4327247 321
ee12b079 17:f410d4327247 322
ee12b079 17:f410d4327247 323
ee12b079 17:f410d4327247 324
krishanprajapat 0:578d0f87988f 325 if(!temp_return){
krishanprajapat 0:578d0f87988f 326 return 0;
krishanprajapat 0:578d0f87988f 327 }
krishanprajapat 0:578d0f87988f 328 count++;
ee12b079 17:f410d4327247 329 } else {
krishanprajapat 0:578d0f87988f 330 wait_us(50);
krishanprajapat 0:578d0f87988f 331 miso_err_cnt++;
krishanprajapat 0:578d0f87988f 332 }
krishanprajapat 0:578d0f87988f 333 }
krishanprajapat 0:578d0f87988f 334 }
krishanprajapat 0:578d0f87988f 335 return 1;
krishanprajapat 0:578d0f87988f 336 }
ee12b079 17:f410d4327247 337 //for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx.
krishanprajapat 0:578d0f87988f 338 //----------------------------------------------------------------------------
ee12b079 17:f410d4327247 339 /*
krishanprajapat 0:578d0f87988f 340 # define initiate {\
krishanprajapat 0:578d0f87988f 341 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 342 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 343 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 344 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 345 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 346 spi.write(0x08);\
krishanprajapat 0:578d0f87988f 347 spi.write(0x14);\
krishanprajapat 0:578d0f87988f 348 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 349 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 350 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 351 spi.write(0x08);\
krishanprajapat 0:578d0f87988f 352 spi.write(0x15);\
krishanprajapat 0:578d0f87988f 353 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 354 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 355 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 356 spi.write(0x09);\
krishanprajapat 0:578d0f87988f 357 spi.write(0x24);\
krishanprajapat 0:578d0f87988f 358 spi.write(0x20);\
krishanprajapat 0:578d0f87988f 359 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 360 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 361 spi.write(0x09);\
krishanprajapat 0:578d0f87988f 362 spi.write(0x37);\
krishanprajapat 0:578d0f87988f 363 spi.write(0xE0);\
krishanprajapat 0:578d0f87988f 364 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 365 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 366 spi.write(0x09);\
krishanprajapat 0:578d0f87988f 367 spi.write(0x36);\
krishanprajapat 0:578d0f87988f 368 spi.write(0x70);\
krishanprajapat 0:578d0f87988f 369 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 370 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 371 spi.write(0x09);\
krishanprajapat 0:578d0f87988f 372 spi.write(0x39);\
krishanprajapat 0:578d0f87988f 373 spi.write(0x10);\
krishanprajapat 0:578d0f87988f 374 gCS_ADF=1;\
ee12b079 17:f410d4327247 375 }*/
ee12b079 17:f410d4327247 376
ee12b079 17:f410d4327247 377 unsigned char temp;
ee12b079 17:f410d4327247 378 bool reg_err;
ee12b079 17:f410d4327247 379 int reg_err_cnt;
ee12b079 17:f410d4327247 380 #define REG_ERR_THRS 5
ee12b079 17:f410d4327247 381 #define reg_check(addr1,addr2,reg_val)\
ee12b079 17:f410d4327247 382 {\
ee12b079 17:f410d4327247 383 gCS_ADF=0;\
ee12b079 17:f410d4327247 384 reg_err=false;\
ee12b079 17:f410d4327247 385 spi.write(addr1);\
ee12b079 17:f410d4327247 386 spi.write(addr2);\
ee12b079 17:f410d4327247 387 spi.write(0xFF);\
ee12b079 17:f410d4327247 388 temp = spi.write(0xFF);\
ee12b079 17:f410d4327247 389 if(temp==reg_val)\
ee12b079 17:f410d4327247 390 reg_err = false;\
ee12b079 17:f410d4327247 391 else\
ee12b079 17:f410d4327247 392 reg_err=true;\
ee12b079 17:f410d4327247 393 gCS_ADF=1;\
ee12b079 17:f410d4327247 394 }\
ee12b079 17:f410d4327247 395 //========================================================
ee12b079 17:f410d4327247 396 /*# define initiate {\
ee12b079 17:f410d4327247 397 gCS_ADF=0;\
ee12b079 17:f410d4327247 398 spi.write(0xFF);\
ee12b079 17:f410d4327247 399 spi.write(0xFF);\
ee12b079 17:f410d4327247 400 gCS_ADF=1;\
ee12b079 17:f410d4327247 401 gCS_ADF=0;\
ee12b079 17:f410d4327247 402 spi.write(0x08);\
ee12b079 17:f410d4327247 403 spi.write(0x14);\
ee12b079 17:f410d4327247 404 spi.write(0xFF);\
ee12b079 17:f410d4327247 405 gCS_ADF=1;\
ee12b079 17:f410d4327247 406 gCS_ADF=0;\
ee12b079 17:f410d4327247 407 spi.write(0x08);\
ee12b079 17:f410d4327247 408 spi.write(0x15);\
ee12b079 17:f410d4327247 409 spi.write(0xFF);\
ee12b079 17:f410d4327247 410 gCS_ADF=1;\
ee12b079 17:f410d4327247 411 gCS_ADF=0;\
ee12b079 17:f410d4327247 412 spi.write(0x09);\
ee12b079 17:f410d4327247 413 spi.write(0x24);\
ee12b079 17:f410d4327247 414 spi.write(0x20);\
ee12b079 17:f410d4327247 415 gCS_ADF=1;\
ee12b079 17:f410d4327247 416 gCS_ADF=0;\
ee12b079 17:f410d4327247 417 spi.write(0x09);\
ee12b079 17:f410d4327247 418 spi.write(0x37);\
ee12b079 17:f410d4327247 419 spi.write(0xE0);\
ee12b079 17:f410d4327247 420 gCS_ADF=1;\
ee12b079 17:f410d4327247 421 gCS_ADF=0;\
ee12b079 17:f410d4327247 422 spi.write(0x09);\
ee12b079 17:f410d4327247 423 spi.write(0x36);\
ee12b079 17:f410d4327247 424 spi.write(0x70);\
ee12b079 17:f410d4327247 425 gCS_ADF=1;\
ee12b079 17:f410d4327247 426 gCS_ADF=0;\
ee12b079 17:f410d4327247 427 spi.write(0x09);\
ee12b079 17:f410d4327247 428 spi.write(0x39);\
ee12b079 17:f410d4327247 429 spi.write(0x10);\
ee12b079 17:f410d4327247 430 gCS_ADF=1;\
ee12b079 17:f410d4327247 431 }*/
ee12b079 17:f410d4327247 432
ee12b079 17:f410d4327247 433 //========================================================
krishanprajapat 0:578d0f87988f 434
krishanprajapat 0:578d0f87988f 435
ee12b079 17:f410d4327247 436 #define initiate {\
ee12b079 17:f410d4327247 437 gCS_ADF=0;\
ee12b079 17:f410d4327247 438 spi.write(0xFF);\
ee12b079 17:f410d4327247 439 spi.write(0xFF);\
ee12b079 17:f410d4327247 440 gCS_ADF=1;\
ee12b079 17:f410d4327247 441 reg_err=true;\
ee12b079 17:f410d4327247 442 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 17:f410d4327247 443 gCS_ADF=0;\
ee12b079 17:f410d4327247 444 spi.write(0x08);\
ee12b079 17:f410d4327247 445 spi.write(0x14);\
ee12b079 17:f410d4327247 446 spi.write(TRANSMIT_LEN_1);\
ee12b079 17:f410d4327247 447 gCS_ADF=1;\
ee12b079 17:f410d4327247 448 reg_check(0x28,0x14,TRANSMIT_LEN_1);\
ee12b079 17:f410d4327247 449 }\
ee12b079 17:f410d4327247 450 if(reg_err)\
ee12b079 17:f410d4327247 451 printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 452 else\
ee12b079 17:f410d4327247 453 printf("reg written successful %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 454 reg_err=true;\
ee12b079 17:f410d4327247 455 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 17:f410d4327247 456 gCS_ADF=0;\
ee12b079 17:f410d4327247 457 spi.write(0x08);\
ee12b079 17:f410d4327247 458 spi.write(0x15);\
ee12b079 17:f410d4327247 459 spi.write(TRANSMIT_LEN_2);\
ee12b079 17:f410d4327247 460 gCS_ADF=1;\
ee12b079 17:f410d4327247 461 reg_check(0x28,0x15,TRANSMIT_LEN_2);\
ee12b079 17:f410d4327247 462 }\
ee12b079 17:f410d4327247 463 if(reg_err)\
ee12b079 17:f410d4327247 464 printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 465 else\
ee12b079 17:f410d4327247 466 printf("reg written successful %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 467 }\
ee12b079 17:f410d4327247 468
ee12b079 17:f410d4327247 469 bool rolling_buffer_settings_error=true;
ee12b079 17:f410d4327247 470 bool bbram_write_success=true;
ee12b079 17:f410d4327247 471 int bbram_err_cnt=0;
ee12b079 17:f410d4327247 472 int rbp_err_cnt=0;
ee12b079 17:f410d4327247 473 bool reset_flag=false;
ee12b079 17:f410d4327247 474 #define RBP_THRS 4
ee12b079 17:f410d4327247 475 bool quit_configuration=false;
ee12b079 17:f410d4327247 476 bool power_reset_flag=false;
ee12b079 17:f410d4327247 477 unsigned int power_reset_count=0;
ee12b079 17:f410d4327247 478 bool Configuration_done=false;
ee12b079 17:f410d4327247 479 #define HW_THRS 2
ee12b079 17:f410d4327247 480 //======================================OLD Write Data===================================
ee12b079 17:f410d4327247 481 /*
krishanprajapat 0:578d0f87988f 482 #define write_data {\
krishanprajapat 3:bac82a182b28 483 counter++;\
krishanprajapat 0:578d0f87988f 484 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 485 spi.write(0x0B);\
krishanprajapat 0:578d0f87988f 486 spi.write(0x36);\
krishanprajapat 0:578d0f87988f 487 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 488 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 489 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 490 if(buffer_state){\
krishanprajapat 0:578d0f87988f 491 spi.write(0x18);\
krishanprajapat 0:578d0f87988f 492 spi.write(0x20);\
krishanprajapat 0:578d0f87988f 493 for(unsigned char i=0; i<112;i++){\
krishanprajapat 0:578d0f87988f 494 spi.write(buffer_112[i]);\
krishanprajapat 0:578d0f87988f 495 }\
krishanprajapat 0:578d0f87988f 496 }\
krishanprajapat 0:578d0f87988f 497 else{\
krishanprajapat 0:578d0f87988f 498 spi.write(0x18);\
krishanprajapat 0:578d0f87988f 499 spi.write(0x90);\
krishanprajapat 0:578d0f87988f 500 for(unsigned char i=0; i<112;i++){\
krishanprajapat 0:578d0f87988f 501 spi.write(buffer_112[i]);\
krishanprajapat 0:578d0f87988f 502 }\
krishanprajapat 0:578d0f87988f 503 }\
krishanprajapat 0:578d0f87988f 504 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 505 buffer_state = !buffer_state;\
ee12b079 17:f410d4327247 506 }*/
ee12b079 17:f410d4327247 507 void send_tm_from_SD_card()
ee12b079 17:f410d4327247 508 {
krishanprajapat 0:578d0f87988f 509 }
ee12b079 17:f410d4327247 510 //==========================================================================
ee12b079 17:f410d4327247 511
ee12b079 17:f410d4327247 512 //==================NEW_WRITE_DATA_VARs============================================
ee12b079 17:f410d4327247 513 //unsigned int counter =0;
ee12b079 17:f410d4327247 514 bool data_err= false;
ee12b079 17:f410d4327247 515 unsigned char temp_byte=0x00;
ee12b079 17:f410d4327247 516 unsigned char data_err1[112];
ee12b079 17:f410d4327247 517 unsigned char data_err_cnt=0;
ee12b079 17:f410d4327247 518 unsigned int byte_count =0;
ee12b079 17:f410d4327247 519 #define DATA_ERR_THRS 20
krishanprajapat 0:578d0f87988f 520
ee12b079 17:f410d4327247 521 bool last_buffer = 0;
ee12b079 17:f410d4327247 522 //#define write_data data_err_cnt=0;
ee12b079 17:f410d4327247 523 //==================NEW_WRITE_DATA============================================
ee12b079 17:f410d4327247 524 bool finish_write_data=0;
ee12b079 17:f410d4327247 525 #define write_data {\
ee12b079 17:f410d4327247 526 counter++;\
ee12b079 17:f410d4327247 527 gCS_ADF=0;\
ee12b079 17:f410d4327247 528 spi.write(0x0B);\
ee12b079 17:f410d4327247 529 spi.write(0x36);\
ee12b079 17:f410d4327247 530 spi.write(0xFF);\
ee12b079 17:f410d4327247 531 gCS_ADF=1;\
ee12b079 17:f410d4327247 532 data_err_cnt=0;\
ee12b079 17:f410d4327247 533 data_err=true;\
ee12b079 17:f410d4327247 534 while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
ee12b079 17:f410d4327247 535 gCS_ADF=0;\
ee12b079 17:f410d4327247 536 if(buffer_state){\
ee12b079 17:f410d4327247 537 spi.write(0x18);\
ee12b079 17:f410d4327247 538 spi.write(0x20);\
ee12b079 17:f410d4327247 539 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 540 if(bypass_adf)\
ee12b079 17:f410d4327247 541 gPC.putc(buffer_112[i]);\
ee12b079 17:f410d4327247 542 else\
ee12b079 17:f410d4327247 543 spi.write(buffer_112[i]);\
ee12b079 17:f410d4327247 544 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 17:f410d4327247 545 }\
ee12b079 17:f410d4327247 546 }\
ee12b079 17:f410d4327247 547 else{\
ee12b079 17:f410d4327247 548 spi.write(0x18);\
ee12b079 17:f410d4327247 549 spi.write(0x90);\
ee12b079 17:f410d4327247 550 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 551 if(bypass_adf)\
ee12b079 17:f410d4327247 552 gPC.putc(buffer_112[i]);\
ee12b079 17:f410d4327247 553 else\
ee12b079 17:f410d4327247 554 spi.write(buffer_112[i]);\
ee12b079 17:f410d4327247 555 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 17:f410d4327247 556 }\
ee12b079 17:f410d4327247 557 }\
ee12b079 17:f410d4327247 558 gCS_ADF=1;\
ee12b079 17:f410d4327247 559 wait_us(5);\
ee12b079 17:f410d4327247 560 data_err=false;\
ee12b079 17:f410d4327247 561 gCS_ADF=0;\
ee12b079 17:f410d4327247 562 spi.write(0x38);\
ee12b079 17:f410d4327247 563 if(buffer_state){\
ee12b079 17:f410d4327247 564 spi.write(0x20);\
ee12b079 17:f410d4327247 565 }\
ee12b079 17:f410d4327247 566 else{\
ee12b079 17:f410d4327247 567 spi.write(0x90);\
ee12b079 17:f410d4327247 568 }\
ee12b079 17:f410d4327247 569 spi.write(0xFF);\
ee12b079 17:f410d4327247 570 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 571 temp_byte=spi.write(0xFF);\
ee12b079 17:f410d4327247 572 if(buffer_112[i]!=temp_byte){\
ee12b079 17:f410d4327247 573 data_err1[i]=1;\
ee12b079 17:f410d4327247 574 data_err=true;\
ee12b079 17:f410d4327247 575 }\
ee12b079 17:f410d4327247 576 }\
ee12b079 17:f410d4327247 577 gCS_ADF=1;\
ee12b079 17:f410d4327247 578 /*SPI_mutex.unlock();*/\
ee12b079 17:f410d4327247 579 if(data_err==false){\
ee12b079 17:f410d4327247 580 buffer_state = !buffer_state;\
ee12b079 17:f410d4327247 581 }\
ee12b079 17:f410d4327247 582 data_err_cnt++;\
ee12b079 17:f410d4327247 583 if(last_buffer){\
ee12b079 17:f410d4327247 584 finish_write_data = true;\
ee12b079 17:f410d4327247 585 /*gPC.puts("adf_off\r\n");*/\
ee12b079 17:f410d4327247 586 }\
ee12b079 17:f410d4327247 587 }\
ee12b079 17:f410d4327247 588 }
ee12b079 17:f410d4327247 589 //==============================================================
ee12b079 17:f410d4327247 590
ee12b079 17:f410d4327247 591 /*void check()
ee12b079 17:f410d4327247 592 {
ee12b079 17:f410d4327247 593 check_status; //remove me
ee12b079 17:f410d4327247 594 printf("I 0x%X\r\n",(int)status);//Remove me
ee12b079 17:f410d4327247 595 if(IRQ) {
ee12b079 17:f410d4327247 596 printf("det\r\n");
ee12b079 17:f410d4327247 597 // if(1){
ee12b079 17:f410d4327247 598 if(!ADF_off) {
ee12b079 17:f410d4327247 599 // gCOM_MNG_TMTC_THREAD->signal_set(signal);
ee12b079 17:f410d4327247 600 if(stop_transmission) {
krishanprajapat 0:578d0f87988f 601 write_data;
krishanprajapat 0:578d0f87988f 602 ADF_off=true;
ee12b079 17:f410d4327247 603
ee12b079 17:f410d4327247 604 } else {
krishanprajapat 0:578d0f87988f 605 write_data;
krishanprajapat 0:578d0f87988f 606 transmitdata();
krishanprajapat 0:578d0f87988f 607 }
ee12b079 17:f410d4327247 608 } else {
krishanprajapat 3:bac82a182b28 609 wait_ms(20);
ee12b079 17:f410d4327247 610 // ticker.detach();
krishanprajapat 0:578d0f87988f 611 gCS_ADF=0;
krishanprajapat 0:578d0f87988f 612 spi.write(0xB1);
krishanprajapat 0:578d0f87988f 613 gCS_ADF=1;
krishanprajapat 0:578d0f87988f 614 gPC.puts("transmission done\r\n");
ee12b079 17:f410d4327247 615 // cout<<counter<<endl;
ee12b079 17:f410d4327247 616 loop_on=false;
ee12b079 17:f410d4327247 617 }
krishanprajapat 0:578d0f87988f 618 }
ee12b079 17:f410d4327247 619 }*/
ee12b079 17:f410d4327247 620 //=============NEW CHECK VAriables===================================================================
ee12b079 17:f410d4327247 621 bool data_irq_err=0;
ee12b079 17:f410d4327247 622
ee12b079 17:f410d4327247 623 //================================================================================
ee12b079 17:f410d4327247 624 void check()
ee12b079 17:f410d4327247 625 {
ee12b079 17:f410d4327247 626 check_status; //remove me
ee12b079 17:f410d4327247 627 printf("I 0x%X\r\n",(int)status);//Remove me
ee12b079 17:f410d4327247 628 if(IRQ) {
ee12b079 17:f410d4327247 629 printf("det\r\n");
ee12b079 17:f410d4327247 630 // if(1){
ee12b079 17:f410d4327247 631 if(!ADF_off) {
ee12b079 17:f410d4327247 632 // gCOM_MNG_TMTC_THREAD->signal_set(signal);
ee12b079 17:f410d4327247 633 if(stop_transmission) {
ee12b079 17:f410d4327247 634 write_data;
ee12b079 17:f410d4327247 635 ADF_off=true;
ee12b079 17:f410d4327247 636
ee12b079 17:f410d4327247 637 } else {
ee12b079 17:f410d4327247 638 write_data;
ee12b079 17:f410d4327247 639 transmitdata();
ee12b079 17:f410d4327247 640 }
ee12b079 17:f410d4327247 641 } else {
ee12b079 17:f410d4327247 642 wait_ms(20);
ee12b079 17:f410d4327247 643 // ticker.detach();
ee12b079 17:f410d4327247 644 gCS_ADF=0;
ee12b079 17:f410d4327247 645 spi.write(0xB1);
ee12b079 17:f410d4327247 646 gCS_ADF=1;
ee12b079 17:f410d4327247 647 gPC.puts("transmission done\r\n");
ee12b079 17:f410d4327247 648 // cout<<counter<<endl;
ee12b079 17:f410d4327247 649 loop_on=false;
ee12b079 17:f410d4327247 650 }
ee12b079 17:f410d4327247 651 }
ee12b079 17:f410d4327247 652 else{
ee12b079 17:f410d4327247 653 if(T.read_us()>98000){\
ee12b079 17:f410d4327247 654 data_irq_err=true;\
ee12b079 17:f410d4327247 655 CMD(CMD_PHY_ON);
ee12b079 17:f410d4327247 656 gPC.printf("Data_error_detected");
ee12b079 17:f410d4327247 657 }\
ee12b079 17:f410d4327247 658 }\
krishanprajapat 0:578d0f87988f 659 }
krishanprajapat 0:578d0f87988f 660
ee12b079 17:f410d4327247 661
ee12b079 17:f410d4327247 662
ee12b079 17:f410d4327247 663 //=================================================================================
ee12b079 17:f410d4327247 664
ee12b079 17:f410d4327247 665
ee12b079 17:f410d4327247 666
ee12b079 17:f410d4327247 667 //bool bypass_adf = false;
ee12b079 17:f410d4327247 668 //================================================================================
ee12b079 17:f410d4327247 669 //void check(){
ee12b079 17:f410d4327247 670 //if(IRQ || bypass_adf){\
ee12b079 17:f410d4327247 671 // if(finish_write_data){\
ee12b079 17:f410d4327247 672 // if(ADF_off){\
ee12b079 17:f410d4327247 673 // SPI_mutex.lock();\
ee12b079 17:f410d4327247 674 // gCS_ADF=0;\
ee12b079 17:f410d4327247 675 // spi.write(0xB1);\
ee12b079 17:f410d4327247 676 // data_tx_success=true;\
ee12b079 17:f410d4327247 677 // gCS_ADF=1;\
ee12b079 17:f410d4327247 678 // SPI_mutex.unlock();\
ee12b079 17:f410d4327247 679 // loop_on = false;\
ee12b079 17:f410d4327247 680 // gPC.puts("Transmission done\r\n");\
ee12b079 17:f410d4327247 681 // gLEDR = 1;\
ee12b079 17:f410d4327247 682 // }\
ee12b079 17:f410d4327247 683 // else{\
ee12b079 17:f410d4327247 684 // ADF_off = true;\
ee12b079 17:f410d4327247 685 // }\
ee12b079 17:f410d4327247 686 // }else{\
ee12b079 17:f410d4327247 687 // gLEDR = !gLEDR;\
ee12b079 17:f410d4327247 688 // write_data;\
ee12b079 17:f410d4327247 689 // if(sent_tmfrom_SDcard)\
ee12b079 17:f410d4327247 690 // send_tm_from_SD_card_fun();\
ee12b079 17:f410d4327247 691 // else snd_tm.transmit_data(buffer_112,&last_buffer);\
ee12b079 17:f410d4327247 692 // }\
ee12b079 17:f410d4327247 693 // T.reset();\
ee12b079 17:f410d4327247 694 // }\
ee12b079 17:f410d4327247 695 // else{\
ee12b079 17:f410d4327247 696 // if(T.read_us()>98000){\
ee12b079 17:f410d4327247 697 // data_irq_err=true;\
ee12b079 17:f410d4327247 698 // CMD(CMD_PHY_ON);\
ee12b079 17:f410d4327247 699 // break;\
ee12b079 17:f410d4327247 700 // }\
ee12b079 17:f410d4327247 701 // }\
ee12b079 17:f410d4327247 702 // }
ee12b079 17:f410d4327247 703 //================================================================================/=
krishanprajapat 0:578d0f87988f 704 //
krishanprajapat 0:578d0f87988f 705 //#define send_data {\
krishanprajapat 0:578d0f87988f 706 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 707 // spi.write(0xBB);\
krishanprajapat 0:578d0f87988f 708 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 709 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 710 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 711 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 712 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 713 // if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 714 // send_tm_from_SD_card();\
krishanprajapat 0:578d0f87988f 715 // }else{\
krishanprajapat 0:578d0f87988f 716 // transmitdata();\
krishanprajapat 0:578d0f87988f 717 // }\
krishanprajapat 0:578d0f87988f 718 // write_data;\
krishanprajapat 0:578d0f87988f 719 // if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 720 // send_tm_from_SD_card();\
krishanprajapat 0:578d0f87988f 721 // }else{\
krishanprajapat 0:578d0f87988f 722 // transmitdata();\
krishanprajapat 0:578d0f87988f 723 // }\
krishanprajapat 0:578d0f87988f 724 // write_data;\
krishanprajapat 0:578d0f87988f 725 // if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 726 // send_tm_from_SD_card();\
krishanprajapat 0:578d0f87988f 727 // }else{\
krishanprajapat 0:578d0f87988f 728 // transmitdata();\
krishanprajapat 0:578d0f87988f 729 // }\
krishanprajapat 0:578d0f87988f 730 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 731 // spi.write(0xB1);\
krishanprajapat 0:578d0f87988f 732 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 733 // wait_us(300);\
krishanprajapat 0:578d0f87988f 734 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 735 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 736 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 737 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 738 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 739 // spi.write(0xB5);\
krishanprajapat 0:578d0f87988f 740 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 741 // wait_us(300);\
krishanprajapat 0:578d0f87988f 742 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 743 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 744 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 745 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 746 // ticker.attach_us(&check,32000);\
krishanprajapat 0:578d0f87988f 747 //}
krishanprajapat 0:578d0f87988f 748
krishanprajapat 0:578d0f87988f 749 #define send_data {\
krishanprajapat 0:578d0f87988f 750 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 751 spi.write(0xBB);\
krishanprajapat 0:578d0f87988f 752 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 753 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 754 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 755 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 756 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 757 if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 758 }\
krishanprajapat 0:578d0f87988f 759 else{\
krishanprajapat 0:578d0f87988f 760 transmitdata();\
krishanprajapat 0:578d0f87988f 761 }\
krishanprajapat 0:578d0f87988f 762 write_data;\
krishanprajapat 0:578d0f87988f 763 if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 764 }else{\
krishanprajapat 0:578d0f87988f 765 transmitdata();\
krishanprajapat 0:578d0f87988f 766 }\
krishanprajapat 0:578d0f87988f 767 write_data;\
krishanprajapat 0:578d0f87988f 768 if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 769 }else{\
krishanprajapat 0:578d0f87988f 770 transmitdata();\
krishanprajapat 0:578d0f87988f 771 }\
krishanprajapat 0:578d0f87988f 772 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 773 spi.write(0xB1);\
krishanprajapat 0:578d0f87988f 774 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 775 wait_us(300);\
krishanprajapat 0:578d0f87988f 776 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 777 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 778 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 779 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 780 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 781 spi.write(0xB5);\
krishanprajapat 0:578d0f87988f 782 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 783 wait_us(300);\
krishanprajapat 0:578d0f87988f 784 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 785 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 786 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 787 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 788 }
ee12b079 17:f410d4327247 789 #define initial_adf_check {\
ee12b079 17:f410d4327247 790 bool Configuration_Done=false;\
ee12b079 17:f410d4327247 791 quit_configuration=false;\
ee12b079 17:f410d4327247 792 bool reset_flag1 = 0;\
ee12b079 17:f410d4327247 793 bool flag = false;\
ee12b079 17:f410d4327247 794 while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 795 while((bbram_err_cnt<2)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 796 /*assrt_phy_off;*/\
ee12b079 17:f410d4327247 797 /*Assrt_phy_off Begin*/\
ee12b079 17:f410d4327247 798 {\
ee12b079 17:f410d4327247 799 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 800 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 801 if(cmd_err_flag){\
ee12b079 17:f410d4327247 802 temp_return=1;\
ee12b079 17:f410d4327247 803 }\
ee12b079 17:f410d4327247 804 else{\
ee12b079 17:f410d4327247 805 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 806 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 807 check_status;\
ee12b079 17:f410d4327247 808 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 809 temp_return = 0;\
ee12b079 17:f410d4327247 810 break;\
ee12b079 17:f410d4327247 811 }\
ee12b079 17:f410d4327247 812 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 813 temp_return = 1;\
ee12b079 17:f410d4327247 814 break;\
ee12b079 17:f410d4327247 815 }\
ee12b079 17:f410d4327247 816 else {\
ee12b079 17:f410d4327247 817 wait_ms(1);\
ee12b079 17:f410d4327247 818 }\
ee12b079 17:f410d4327247 819 }\
ee12b079 17:f410d4327247 820 }\
ee12b079 17:f410d4327247 821 }\
ee12b079 17:f410d4327247 822 /*Assrt_phy_off end*/\
ee12b079 17:f410d4327247 823 reset_flag1=temp_return;\
ee12b079 17:f410d4327247 824 if(!reset_flag1){\
ee12b079 17:f410d4327247 825 bbram_write;\
ee12b079 17:f410d4327247 826 while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 827 bbram_check;\
ee12b079 17:f410d4327247 828 if(bbram_err==0){\
ee12b079 17:f410d4327247 829 bbram_write_success=true;\
ee12b079 17:f410d4327247 830 bbram_err_cnt=0;\
ee12b079 17:f410d4327247 831 initiate;\
ee12b079 17:f410d4327247 832 if(reg_err){\
ee12b079 17:f410d4327247 833 rbp_err_cnt++;\
ee12b079 17:f410d4327247 834 }\
ee12b079 17:f410d4327247 835 else{\
ee12b079 17:f410d4327247 836 rbp_err_cnt=0;\
ee12b079 17:f410d4327247 837 gPC.printf("NO Reg err\r\n");\
ee12b079 17:f410d4327247 838 CMD(CMD_CONFIG_DEV);\
ee12b079 17:f410d4327247 839 if(cmd_err_flag){\
ee12b079 17:f410d4327247 840 reset_flag=1;\
ee12b079 17:f410d4327247 841 gPC.printf("CMD ERR\r\n");\
ee12b079 17:f410d4327247 842 }\
ee12b079 17:f410d4327247 843 else{\
ee12b079 17:f410d4327247 844 reset_flag=0;\
ee12b079 17:f410d4327247 845 gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\
ee12b079 17:f410d4327247 846 quit_configuration=true;\
ee12b079 17:f410d4327247 847 }\
ee12b079 17:f410d4327247 848 }\
ee12b079 17:f410d4327247 849 }\
ee12b079 17:f410d4327247 850 else{\
ee12b079 17:f410d4327247 851 bbram_write_success=false;\
ee12b079 17:f410d4327247 852 bbram_err_cnt++;\
ee12b079 17:f410d4327247 853 break;\
ee12b079 17:f410d4327247 854 }\
ee12b079 17:f410d4327247 855 }\
ee12b079 17:f410d4327247 856 }\
ee12b079 17:f410d4327247 857 else{\
ee12b079 17:f410d4327247 858 break;\
ee12b079 17:f410d4327247 859 }\
ee12b079 17:f410d4327247 860 }\
ee12b079 17:f410d4327247 861 if(reset_flag1){\
ee12b079 17:f410d4327247 862 hardware_reset(0);\
ee12b079 17:f410d4327247 863 hw_reset_err_cnt++;\
ee12b079 17:f410d4327247 864 gPC.puts("Resetting hardware\r\n");\
ee12b079 17:f410d4327247 865 }\
ee12b079 17:f410d4327247 866 }\
ee12b079 17:f410d4327247 867 if(hw_reset_err_cnt==HW_THRS){\
ee12b079 17:f410d4327247 868 power_reset_flag=1;\
ee12b079 17:f410d4327247 869 power_reset_count++;\
ee12b079 17:f410d4327247 870 }\
ee12b079 17:f410d4327247 871 else{\
ee12b079 17:f410d4327247 872 Configuration_Done=true;\
ee12b079 17:f410d4327247 873 gPC.printf("Configuration_Done\n");\
ee12b079 17:f410d4327247 874 }\
ee12b079 17:f410d4327247 875 }
krishanprajapat 0:578d0f87988f 876
ee12b079 17:f410d4327247 877 void adf_not_SDcard()
ee12b079 17:f410d4327247 878 {
krishanprajapat 0:578d0f87988f 879 buffer_state = true;
ee12b079 17:f410d4327247 880 // last_buffer = false;
krishanprajapat 0:578d0f87988f 881 loop_on = true;
krishanprajapat 0:578d0f87988f 882 ADF_off = false;
krishanprajapat 0:578d0f87988f 883 sent_tmfrom_SDcard = false;
ee12b079 17:f410d4327247 884
ee12b079 17:f410d4327247 885 // signal = COM_MNG_TMTC_SIGNAL_ADF_NSD;
krishanprajapat 0:578d0f87988f 886 initial_adf_check;
ee12b079 17:f410d4327247 887 // gPC.puts("initial adf check\r\n");
ee12b079 17:f410d4327247 888 // initiate;
ee12b079 17:f410d4327247 889 gPC.puts("Config_part done\r\n");
krishanprajapat 0:578d0f87988f 890 send_data;
ee12b079 17:f410d4327247 891 // gPC.puts("Inside adf transmission\r\n");
krishanprajapat 0:578d0f87988f 892 // ADF_non_responsive_timeout.attach(&ADF_non_responsive_fun, 10);
krishanprajapat 0:578d0f87988f 893
krishanprajapat 0:578d0f87988f 894 }
krishanprajapat 0:578d0f87988f 895 int main()
krishanprajapat 0:578d0f87988f 896 {
ee12b079 23:2f89d47b862c 897 RF_SW_CNTRL_TX = 1;
ee12b079 23:2f89d47b862c 898 wait_ms(25);
ee12b079 23:2f89d47b862c 899 RF_SW_CNTRL_TX = 0;
ee12b079 23:2f89d47b862c 900
ee12b079 20:2cfca61aafcb 901 COM_OC_SW = 1;
ee12b079 17:f410d4327247 902 while(1) {
ee12b079 14:eee578d96cfe 903 reset_flags;
ee12b079 17:f410d4327247 904 gPC.puts("welcome to adf test\n");
ee12b079 17:f410d4327247 905 spi.format(8,0);
ee12b079 17:f410d4327247 906 spi.frequency(1000000);
ee12b079 17:f410d4327247 907 data_length = sizeof(Adf_data);
ee12b079 17:f410d4327247 908 // cout<<data_length<<endl;
ee12b079 17:f410d4327247 909 adf_not_SDcard();
ee12b079 21:bae83ef7ac5f 910 //PA MCR level
ee12b079 21:bae83ef7ac5f 911 gCS_ADF=0;
ee12b079 21:bae83ef7ac5f 912 spi.write(0x1B);//1B0735
ee12b079 21:bae83ef7ac5f 913 spi.write(0x07);
ee12b079 23:2f89d47b862c 914 //************setting for PA_power_output*****************
ee12b079 23:2f89d47b862c 915 //Put values below anything from 0x03,0x04,0x05.... to 0x3F : 0x03 is lowest (-20 dBm) and 0x3F is maximum (13.5 dBm)
ee12b079 23:2f89d47b862c 916 spi.write(0x3F);
ee12b079 23:2f89d47b862c 917 //*********************************
ee12b079 21:bae83ef7ac5f 918 gCS_ADF=1;
ee12b079 17:f410d4327247 919 CMD(CMD_PHY_TX);
ee12b079 17:f410d4327247 920 wait_us(2000);
ee12b079 17:f410d4327247 921 while(loop_on){
ee12b079 23:2f89d47b862c 922
ee12b079 17:f410d4327247 923 led = !led; // toggle led
ee12b079 17:f410d4327247 924 wait_us(20);
ee12b079 17:f410d4327247 925 check();
ee12b079 17:f410d4327247 926 if(data_irq_err){
ee12b079 17:f410d4327247 927 break;\
ee12b079 17:f410d4327247 928 }
ee12b079 17:f410d4327247 929 }
ee12b079 20:2cfca61aafcb 930 wait(0.5);
ee12b079 17:f410d4327247 931 gPC.printf("in WHILE\n");
ee12b079 17:f410d4327247 932 // wait(1);
ee12b079 17:f410d4327247 933 }
krishanprajapat 1:0b0579f5bbef 934 }