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:
Tue Aug 02 16:23:19 2016 +0000
Revision:
21:bae83ef7ac5f
Parent:
20:2cfca61aafcb
Child:
22:eeea8501886c
Child:
23:2f89d47b862c
Testing PA : 12.5 level output

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