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:
Thu Jul 07 15:31:41 2016 +0000
Revision:
17:f410d4327247
Parent:
14:eee578d96cfe
Child:
18:25e7644115f2
Child:
20:2cfca61aafcb
Latest looping code by Dheeraj

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