Interrupt_test

Dependencies:   mbed-rtos mbed

Fork of ADF_test_2 by shubham c

Committer:
ee12b079
Date:
Fri Dec 16 06:57:59 2016 +0000
Revision:
22:eeea8501886c
Parent:
21:bae83ef7ac5f
ADF_Interrupt_test

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);
ee12b079 22:eeea8501886c 51 DigitalOut RF_SW_CNTRL_BCN(PTB17);
ee12b079 22:eeea8501886c 52 DigitalOut RF_SW_CNTRL_TX(PTB7);
krishanprajapat 0:578d0f87988f 53 unsigned int Adf_data_counter=0;
krishanprajapat 0:578d0f87988f 54 unsigned char status =0;
krishanprajapat 0:578d0f87988f 55 unsigned int cmd_err_cnt=0;
krishanprajapat 3:bac82a182b28 56 unsigned int data_length;
krishanprajapat 0:578d0f87988f 57 unsigned int state_err_cnt=0;
krishanprajapat 0:578d0f87988f 58 unsigned int miso_err_cnt=0;
krishanprajapat 0:578d0f87988f 59 unsigned int hw_reset_err_cnt=0;
krishanprajapat 3:bac82a182b28 60 unsigned int counter =0;
ee12b079 17:f410d4327247 61 bool temp_return = 0;
krishanprajapat 0:578d0f87988f 62 bool bcn_flag=0;
krishanprajapat 0:578d0f87988f 63 bool bbram_flag=0;
ee12b079 20:2cfca61aafcb 64 DigitalOut COM_OC_SW(PTB3);
krishanprajapat 0:578d0f87988f 65 bool stop_transmission=false;
krishanprajapat 0:578d0f87988f 66 bool sent_tmfrom_SDcard;
krishanprajapat 0:578d0f87988f 67 bool loop_on;
krishanprajapat 0:578d0f87988f 68 bool ADF_off;
krishanprajapat 0:578d0f87988f 69 bool buffer_state;
krishanprajapat 0:578d0f87988f 70 uint8_t signal = 0x00;
ee12b079 17:f410d4327247 71
ee12b079 17:f410d4327247 72 //unsigned char bbram_buffer[66]= {0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x10,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00};
ee12b079 22:eeea8501886c 73 unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/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 74 //unsigned char Adf_data[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
ee12b079 22:eeea8501886c 75 unsigned char Adf_data[]= {0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x83,0x96,0x0C,0x2A,0xE6,0xED,0xA8,0x1E,0x58,0x80,0x30,0x60,0xCB,0xD2,0xF5,0x54,0xC9,0xF1,0x37,0x0A,0x24,0x71,0xD0,0xBC,0x51,0x70,0x93,0x12,0x43,0x84,0xE4,0x5E,0x2E,0xAA,0xCE,0x64,0x18,0x82,0x3B,0x1C,0xBB,0x23,0xC9,0x04,0x73,0xDA,0x81,0xFA,0xA1,0xF6,0xDE,0xDA,0x9A,0x7B,0xDA,0x52,0x2D,0x00,0xEB,0xCC,0x3D,0xA3,0xB0,0x42,0xAF,0x4F,0x12,0xF8,0x66,0x4B,0x53,0x6C,0x7F,0x04,0xB2,0xF0,0xAF,0xC9,0xD9,0x68,0xDE,0x11,0xEA,0x04,0x08,0x74,0xFE,0xC6,0x06,0x14,0xEF,0x08,0xD1,0xE9,0xBF,0x1E,0x53,0xCB,0xF9,0xD6,0xED,0x03,0x64,0x26,0xB0,0xD4,0x50,0xF4,0x3D,0xB2,0xD3,0x74,0x8C,0x97,0x96,0x2E,0x68,0x04,0x94,0xD0,0xAF,0x7B,0xC0,0x7E,0xA9,0xC6,0x32,0x94,0x80,0xC8,0x67,0x5E,0x20,0x5E,0x7F,0x8A,0x07,0x6A,0x1F,0x5C,0xCD,0xBB,0xAF,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x40,0xDF,0x23,0xA8,0x4B,0x37,0x90,0x62,0x9E,0xB2,0x67,0xB4,0xE2,0xEA,0x3B,0xAC,0xFC,0xF2,0x5D,0x84,0x27,0xCB,0x49,0x9A,0x5F,0xCC,0x7D,0x78,0x26,0x3B,0x7D,0xF0,0xC9,0x34,0xB2,0x02,0x83,0x08,0x1A,0x98,0x62,0x61,0xFA,0xC0,0xAF,0x0A,0x20,0x38,0xA2,0x60,0x9A,0x86,0xF4,0x37,0xBB,0xAA,0xE7,0x36,0x78,0xAC,0xDD,0xC8,0x02,0xFA,0x63,0x69,0x93,0x66,0xC3,0x09,0xF9,0xEE,0x7B,0x4B,0x2D,0x30,0xC6,0x48,0xA7,0xA8,0x42,0x26,0x0D,0xFC,0xD1,0x9B,0x90,0x7C,0xB6,0x74,0x61,0x14,0x76,0xEE,0xC2,0x60,0x58,0x36,0x86,0xAC,0xCA,0x4C,0x27,0x64,0x33,0x38,0x3F,0x34,0xB1,0xE2,0xC2,0x68,0xC3,0x1A,0x1D,0x2C,0x4D,0x47,0xFB,0x54,0x46,0xCF,0xFF,0x64,0xBC,0x3B,0x59,0x6C,0x28,0x53,0xAC,0xD8,0x8E,0x1E,0x2D,0x30,0x0D,0xE4,0x74,0x58,0xAC,0xE5,0x21,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x25,0xA2,0xD6,0xC2,0x28,0x99,0x86,0xE0,0xF5,0xE2,0x2E,0x60,0xA1,0x25,0x87,0x22,0xF1,0x93,0x13,0x48,0x5E,0x0E,0xB4,0x9C,0x65,0x0B,0xA9,0x4A,0x32,0x2D,0x50,0x5E,0xA1,0x8B,0xA9,0xB6,0x99,0x0D,0xC4,0xB4,0x47,0x07,0xEE,0x54,0x89,0x4E,0xF3,0x76,0x8B,0x5B,0xF5,0x8A,0xF0,0x67,0x45,0xE2,0xE7,0xA0,0xA4,0xCE,0xE5,0xD7,0x82,0xB0,0xAE,0xCB,0xF9,0x5C,0x73,0xF8,0x36,0x6C,0x92,0x02,0x32,0xC2,0xE5,0x47,0x37,0x90,0x02,0x56,0x16,0xFC,0xA0,0x74,0xEF,0xBA,0x87,0x1C,0x97,0x8E,0x66,0xC7,0xA3,0xA2,0x87,0xB7,0xA3,0x66,0x3A,0x89,0xDA,0xB4,0x82,0xD9,0xF4,0xE8,0x55,0x43,0x2A,0xE8,0xD1,0x4A,0x01,0x14,0x10,0xC1,0x0C,0x7E,0x52,0xEA,0x88,0xF6,0xDA,0x2B,0x93,0x92,0x62,0x2D,0xDF,0x30,0x09,0xF0,0x05,0xE8,0x63,0xFB,0xE1,0x8C,0x94,0x67,0x64,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x96,0xDF,0x8B,0xE0,0x90,0x80,0x3B,0xD8,0xC7,0x29,0xF7,0xE6,0x53,0x45,0x18,0x20,0xF2,0x8C,0x8D,0x6A,0xAA,0xE9,0xCC,0x98,0x4C,0x4B,0x9B,0xAC,0x81,0x7C,0x2D,0x16,0x48,0x6C,0x43,0xA8,0xA3,0xB1,0xFD,0x76,0x74,0xE6,0xD9,0x36,0x4E,0x44,0x22,0x6C,0x33,0x02,0xD5,0xA6,0xD6,0x91,0x23,0xDC,0x31,0x7B,0xCB,0xA6,0x18,0x19,0x8C,0xFA,0xA6,0x35,0xFC,0x2E,0x01,0xD5,0x7E,0x9C,0xC6,0xC6,0xB3,0x02,0xBD,0xBB,0x5C,0x0C,0xCE,0x52,0x56,0xD4,0x53,0x2B,0x63,0x78,0x05,0x40,0x2C,0xAA,0x25,0x63,0xF0,0xBC,0x94,0x2E,0x3C,0xF2,0x45,0x67,0x98,0x32,0xC7,0xFE,0x9C,0x36,0x7E,0xC6,0x00,0x18,0x4D,0x9C,0x69,0x30,0xA6,0x56,0x0C,0xE4,0xE6,0x08,0x92,0x4C,0x09,0x2E,0x23,0x6E,0x29,0x43,0xED,0x5A,0x2D,0x58,0xB2,0xFE,0xC7,0x18,0xCB,0x90,0x17,0x3D,0x24,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x32,0x56,0x28,0x64,0x22,0x8E,0xEC,0xB0,0xEB,0x21,0xBD,0x5A,0xCD,0x3A,0x7D,0xA8,0xAD,0xA9,0x84,0x92,0x5E,0x0F,0x77,0xA8,0x89,0x42,0xCF,0xC4,0x9D,0xF8,0xA3,0x2E,0xF0,0xF6,0x94,0xC2,0x09,0xFF,0x66,0xE8,0x41,0x8B,0xA6,0xE8,0x40,0x2B,0x4A,0xB4,0x75,0x3E,0xE6,0x92,0xAA,0x1D,0x84,0xAC,0x9C,0x20,0x8E,0xB0,0xB5,0xD0,0xC4,0xC8,0x35,0x95,0x06,0xAA,0x65,0xA9,0xD6,0x16,0x4C,0x94,0x3C,0x0C,0x4E,0x9C,0xDC,0xE6,0xA1,0x59,0x8C,0x60,0xB2,0xAB,0x10,0x30,0x44,0x4E,0x98,0xF8,0xE5,0xDA,0xB4,0xFA,0x6C,0x7E,0xB1,0xCA,0x97,0xC9,0xA9,0x08,0x88,0x66,0xC4,0x76,0x10,0xF5,0x1D,0x9E,0xF0,0x58,0x00,0xCE,0xE2,0x68,0x5D,0xD8,0x49,0xA1,0xD8,0xA6,0x07,0xC2,0x99,0x14,0xD2,0x23,0x2F,0xB2,0x80,0x98,0xF2,0x86,0xE6,0x60,0x62,0x18,0x07,0x19,0x11,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x75,0xB4,0xD8,0xF8,0x02,0x87,0x27,0xBA,0x44,0x67,0x4F,0xB8,0x1C,0x6E,0xEA,0x4A,0xA2,0x9F,0x5C,0x40,0xDC,0x33,0x09,0x54,0x45,0x62,0x2D,0x12,0xE1,0x3A,0x1A,0xC8,0xBF,0x14,0x18,0xDA,0x33,0xB4,0x7C,0x80,0x7A,0xAC,0x98,0x90,0x04,0xE0,0x01,0xFE,0x39,0xB6,0xCE,0xA0,0x63,0x98,0x01,0x36,0x15,0x76,0x78,0x8E,0xC1,0x80,0x65,0xE4,0x7D,0x66,0x58,0xF2,0xD9,0xE6,0x8B,0x78,0x74,0xB2,0x61,0xC4,0x01,0x76,0xD9,0xE0,0xBD,0x1C,0x1A,0x82,0x2F,0x66,0x89,0xC6,0xD8,0x3F,0xA4,0xE0,0x1C,0x81,0x49,0xB4,0x6A,0xCB,0x02,0xE8,0xAA,0x1E,0xB6,0xE0,0xFD,0xF3,0x90,0x6E,0x15,0xA5,0x07,0x84,0x79,0xAE,0xFF,0x6A,0x60,0x6D,0xB7,0x1C,0xA7,0x43,0x6A,0xFA,0x4D,0xBE,0x5E,0x4A,0xAF,0x36,0x4D,0x3C,0xA4,0xAB,0x6B,0x20,0x15,0x2C,0xA5,0x84,0x95,0x62,0xA2,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0x88,0xEC,0x1E,0xC9,0xE5,0xCC,0x1C,0xED,0x52,0xC0,0x54,0x7F,0xD5,0x0F,0x88,0x1A,0x0C,0x45,0x74,0x76,0xEF,0xD2,0x0C,0x9A,0x88,0x65,0x06,0xB0,0x14,0xE1,0x7A,0x64,0xEA,0xF9,0x82,0xCF,0xD6,0xF6,0x7A,0xE5,0xC8,0xBB,0xB2,0xFF,0xC2,0x3A,0xE6,0x34,0x99,0x01,0x42,0x69,0x4C,0x35,0x70,0xC6,0x0D,0x06,0xB6,0xF2,0x16,0xCE,0x40,0xD7,0x47,0x29,0x80,0x71,0x2D,0x1B,0x6A,0xD5,0xAA,0x16,0x60,0xB7,0xA6,0x8D,0x72,0xB7,0xC7,0x00,0xD0,0x1A,0xE9,0xC5,0x42,0x8F,0x3B,0x65,0x78,0xA8,0x60,0xA0,0x54,0x66,0xCD,0xFC,0xF4,0x4F,0xFD,0x26,0xC4,0x29,0x8B,0xC1,0xE8,0xB8,0x98,0x06,0x34,0x6D,0x64,0x83,0x5E,0x27,0x6C,0xDB,0x84,0xBC,0x5B,0x8C,0xE6,0x90,0x12,0x2D,0xB8,0x22,0x6B,0x0A,0x3E,0x62,0xFC,0xD9,0x82,0x50,0xAB,0x3F,0x58,0x78,0xE4,0xA5,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x5D,0x9D,0x8D,0x0C,0x0C,0x50,0x2C,0x0E,0x4E,0x68,0x0E,0x5A,0x3C,0xA4,0x33,0x94,0x73,0x11,0xC8,0x6A,0x0E,0x11,0xFF,0x58,0x22,0x67,0x95,0x1C,0x33,0x51,0x83,0x14,0xC5,0x28,0xF9,0xAC,0xF9,0x37,0x36,0x4C,0x8B,0x20,0x59,0xCE,0x10,0xB2,0xF7,0xE8,0x59,0x3C,0xD4,0xFC,0x59,0x65,0xC0,0xB8,0x22,0x06,0xEE,0xD2,0x18,0x1B,0x43,0xA4,0x1C,0x91,0xA1,0x98,0x4B,0x06,0xA3,0xBE,0x2B,0x6D,0x1A,0xF0,0xD7,0x0D,0x3B,0x24,0xEA,0x74,0x9D,0x82,0xC5,0xCA,0x71,0x0A,0xB0,0x4B,0xEE,0x1A,0x00,0x49,0x67,0xA0,0x93,0x97,0x66,0x32,0x49,0x32,0x2C,0xA8,0xF9,0xAE,0xA7,0xBE,0xE3,0xD8,0x7F,0x48,0x81,0x8B,0x5C,0xF6,0xC4,0x45,0x16,0x52,0xDC,0x6E,0x99,0xB2,0x5D,0x7B,0xC7,0xE8,0x42,0x62,0xAF,0x7A,0x26,0xFA,0x5F,0xEC,0xF9,0x4C,0x60,0x32,0xB9,0x73,0x98,0x5E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xEE,0x34,0x3B,0xE4,0xEA,0x19,0xB2,0xC0,0xBA,0x24,0x95,0x08,0x7C,0x60,0xFB,0x44,0x66,0x1A,0x98,0x6A,0x1F,0x4E,0xA1,0x9C,0x56,0x50,0x67,0xC8,0x09,0x04,0x89,0xAC,0x43,0x9E,0x9C,0x36,0x0B,0x99,0x11,0xF4,0xAD,0x16,0x0A,0xF0,0x61,0xD2,0x3E,0xDE,0xB0,0x12,0xD0,0xF6,0x2E,0xCA,0xF6,0x6A,0x4B,0x31,0xF3,0xD6,0x02,0xF8,0xD6,0x40,0x80,0xA0,0xED,0x40,0x52,0x56,0x7D,0x7C,0xEE,0xD6,0x5C,0xBC,0xC7,0x49,0x80,0x6E,0xB6,0x1B,0x55,0x4A,0x44,0x4D,0x14,0x6A,0x62,0x6C,0x13,0xB8,0x21,0x3E,0x42,0xA4,0xEF,0x7B,0xF2,0x82,0x2E,0xB3,0xA4,0x22,0x16,0xE1,0xBB,0x9E,0xF6,0x24,0x92,0x1C,0x45,0xA5,0x37,0x3C,0x6F,0x57,0x7D,0xA4,0xBB,0x5E,0xA8,0xDE,0x85,0xFB,0xD1,0x42,0xE6,0x2A,0x5F,0x74,0x2F,0x3D,0x04,0x2A,0x41,0x78,0xD6,0xE6,0x93,0x9E,0x75,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x36,0xAF,0xB0,0x2C,0x4F,0x28,0x9E,0x6A,0x44,0xEC,0xB9,0x42,0x0D,0xEB,0x01,0xE2,0xB4,0x9C,0x1C,0xD6,0x85,0xDE,0x37,0x12,0x92,0x2A,0xB0,0x34,0x5F,0x81,0x2E,0xD8,0x1B,0x7B,0xDA,0x5E,0x49,0xA1,0x59,0x18,0x1F,0xC5,0xE3,0x60,0x5A,0x4D,0x06,0xB8,0xD2,0x03,0x6F,0x74,0xB8,0x7E,0x53,0x56,0xBB,0xC0,0x60,0xD8,0xF2,0x0C,0x2B,0x38,0xE7,0x68,0xA7,0x6A,0x86,0x3C,0x2D,0x38,0x13,0xB0,0xBA,0xF4,0xB2,0xEE,0xCB,0xC8,0x23,0x8C,0x23,0x3E,0x4F,0x25,0x29,0xBA,0xFF,0x65,0xB3,0x16,0x00,0xA9,0x4C,0x04,0x3D,0xB3,0x8A,0xF8,0x32,0xE0,0x5B,0x4A,0x5C,0x79,0xE0,0x66,0x70,0xD4,0x81,0x0E,0x7E,0x13,0x31,0x36,0x73,0xD9,0x1D,0x28,0xC9,0x60,0x5D,0x04,0x26,0x26,0x28,0x0C,0x73,0xF3,0x6B,0x60,0xBB,0x07,0x57,0xEE,0xAB,0x11,0x33,0xFE,0x4E,0xF6,0x79,0xDA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x83,0x96,0x0C,0x2A,0xE6,0xED,0xA8,0x1E,0x58,0x80,0x30,0x60,0xCB,0xD2,0xF5,0x54,0xC9,0xF1,0x37,0x0A,0x24,0x71,0xD0,0xBC,0x51,0x70,0x93,0x12,0x43,0x84,0xE4,0x5E,0x2E,0xAA,0xCE,0x64,0x18,0x82,0x3B,0x1C,0xBB,0x23,0xC9,0x04,0x73,0xDA,0x81,0xFA,0xA1,0xF6,0xDE,0xDA,0x9A,0x7B,0xDA,0x52,0x2D,0x00,0xEB,0xCC,0x3D,0xA3,0xB0,0x42,0xAF,0x4F,0x12,0xF8,0x66,0x4B,0x53,0x6C,0x7F,0x04,0xB2,0xF0,0xAF,0xC9,0xD9,0x68,0xDE,0x11,0xEA,0x04,0x08,0x74,0xFE,0xC6,0x06,0x14,0xEF,0x08,0xD1,0xE9,0xBF,0x1E,0x53,0xCB,0xF9,0xD6,0xED,0x03,0x64,0x26,0xB0,0xD4,0x50,0xF4,0x3D,0xB2,0xD3,0x74,0x8C,0x97,0x96,0x2E,0x68,0x04,0x94,0xD0,0xAF,0x7B,0xC0,0x7E,0xA9,0xC6,0x32,0x94,0x80,0xC8,0x67,0x5E,0x20,0x5E,0x7F,0x8A,0x07,0x6A,0x1F,0x5C,0xCD,0xBB,0xAF,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x40,0xDF,0x23,0xA8,0x4B,0x37,0x90,0x62,0x9E,0xB2,0x67,0xB4,0xE2,0xEA,0x3B,0xAC,0xFC,0xF2,0x5D,0x84,0x27,0xCB,0x49,0x9A,0x5F,0xCC,0x7D,0x78,0x26,0x3B,0x7D,0xF0,0xC9,0x34,0xB2,0x02,0x83,0x08,0x1A,0x98,0x62,0x61,0xFA,0xC0,0xAF,0x0A,0x20,0x38,0xA2,0x60,0x9A,0x86,0xF4,0x37,0xBB,0xAA,0xE7,0x36,0x78,0xAC,0xDD,0xC8,0x02,0xFA,0x63,0x69,0x93,0x66,0xC3,0x09,0xF9,0xEE,0x7B,0x4B,0x2D,0x30,0xC6,0x48,0xA7,0xA8,0x42,0x26,0x0D,0xFC,0xD1,0x9B,0x90,0x7C,0xB6,0x74,0x61,0x14,0x76,0xEE,0xC2,0x60,0x58,0x36,0x86,0xAC,0xCA,0x4C,0x27,0x64,0x33,0x38,0x3F,0x34,0xB1,0xE2,0xC2,0x68,0xC3,0x1A,0x1D,0x2C,0x4D,0x47,0xFB,0x54,0x46,0xCF,0xFF,0x64,0xBC,0x3B,0x59,0x6C,0x28,0x53,0xAC,0xD8,0x8E,0x1E,0x2D,0x30,0x0D,0xE4,0x74,0x58,0xAC,0xE5,0x21,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x25,0xA2,0xD6,0xC2,0x28,0x99,0x86,0xE0,0xF5,0xE2,0x2E,0x60,0xA1,0x25,0x87,0x22,0xF1,0x93,0x13,0x48,0x5E,0x0E,0xB4,0x9C,0x65,0x0B,0xA9,0x4A,0x32,0x2D,0x50,0x5E,0xA1,0x8B,0xA9,0xB6,0x99,0x0D,0xC4,0xB4,0x47,0x07,0xEE,0x54,0x89,0x4E,0xF3,0x76,0x8B,0x5B,0xF5,0x8A,0xF0,0x67,0x45,0xE2,0xE7,0xA0,0xA4,0xCE,0xE5,0xD7,0x82,0xB0,0xAE,0xCB,0xF9,0x5C,0x73,0xF8,0x36,0x6C,0x92,0x02,0x32,0xC2,0xE5,0x47,0x37,0x90,0x02,0x56,0x16,0xFC,0xA0,0x74,0xEF,0xBA,0x87,0x1C,0x97,0x8E,0x66,0xC7,0xA3,0xA2,0x87,0xB7,0xA3,0x66,0x3A,0x89,0xDA,0xB4,0x82,0xD9,0xF4,0xE8,0x55,0x43,0x2A,0xE8,0xD1,0x4A,0x01,0x14,0x10,0xC1,0x0C,0x7E,0x52,0xEA,0x88,0xF6,0xDA,0x2B,0x93,0x92,0x62,0x2D,0xDF,0x30,0x09,0xF0,0x05,0xE8,0x63,0xFB,0xE1,0x8C,0x94,0x67,0x64,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x96,0xDF,0x8B,0xE0,0x90,0x80,0x3B,0xD8,0xC7,0x29,0xF7,0xE6,0x53,0x45,0x18,0x20,0xF2,0x8C,0x8D,0x6A,0xAA,0xE9,0xCC,0x98,0x4C,0x4B,0x9B,0xAC,0x81,0x7C,0x2D,0x16,0x48,0x6C,0x43,0xA8,0xA3,0xB1,0xFD,0x76,0x74,0xE6,0xD9,0x36,0x4E,0x44,0x22,0x6C,0x33,0x02,0xD5,0xA6,0xD6,0x91,0x23,0xDC,0x31,0x7B,0xCB,0xA6,0x18,0x19,0x8C,0xFA,0xA6,0x35,0xFC,0x2E,0x01,0xD5,0x7E,0x9C,0xC6,0xC6,0xB3,0x02,0xBD,0xBB,0x5C,0x0C,0xCE,0x52,0x56,0xD4,0x53,0x2B,0x63,0x78,0x05,0x40,0x2C,0xAA,0x25,0x63,0xF0,0xBC,0x94,0x2E,0x3C,0xF2,0x45,0x67,0x98,0x32,0xC7,0xFE,0x9C,0x36,0x7E,0xC6,0x00,0x18,0x4D,0x9C,0x69,0x30,0xA6,0x56,0x0C,0xE4,0xE6,0x08,0x92,0x4C,0x09,0x2E,0x23,0x6E,0x29,0x43,0xED,0x5A,0x2D,0x58,0xB2,0xFE,0xC7,0x18,0xCB,0x90,0x17,0x3D,0x24,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x32,0x56,0x28,0x64,0x22,0x8E,0xEC,0xB0,0xEB,0x21,0xBD,0x5A,0xCD,0x3A,0x7D,0xA8,0xAD,0xA9,0x84,0x92,0x5E,0x0F,0x77,0xA8,0x89,0x42,0xCF,0xC4,0x9D,0xF8,0xA3,0x2E,0xF0,0xF6,0x94,0xC2,0x09,0xFF,0x66,0xE8,0x41,0x8B,0xA6,0xE8,0x40,0x2B,0x4A,0xB4,0x75,0x3E,0xE6,0x92,0xAA,0x1D,0x84,0xAC,0x9C,0x20,0x8E,0xB0,0xB5,0xD0,0xC4,0xC8,0x35,0x95,0x06,0xAA,0x65,0xA9,0xD6,0x16,0x4C,0x94,0x3C,0x0C,0x4E,0x9C,0xDC,0xE6,0xA1,0x59,0x8C,0x60,0xB2,0xAB,0x10,0x30,0x44,0x4E,0x98,0xF8,0xE5,0xDA,0xB4,0xFA,0x6C,0x7E,0xB1,0xCA,0x97,0xC9,0xA9,0x08,0x88,0x66,0xC4,0x76,0x10,0xF5,0x1D,0x9E,0xF0,0x58,0x00,0xCE,0xE2,0x68,0x5D,0xD8,0x49,0xA1,0xD8,0xA6,0x07,0xC2,0x99,0x14,0xD2,0x23,0x2F,0xB2,0x80,0x98,0xF2,0x86,0xE6,0x60,0x62,0x18,0x07,0x19,0x11,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x75,0xB4,0xD8,0xF8,0x02,0x87,0x27,0xBA,0x44,0x67,0x4F,0xB8,0x1C,0x6E,0xEA,0x4A,0xA2,0x9F,0x5C,0x40,0xDC,0x33,0x09,0x54,0x45,0x62,0x2D,0x12,0xE1,0x3A,0x1A,0xC8,0xBF,0x14,0x18,0xDA,0x33,0xB4,0x7C,0x80,0x7A,0xAC,0x98,0x90,0x04,0xE0,0x01,0xFE,0x39,0xB6,0xCE,0xA0,0x63,0x98,0x01,0x36,0x15,0x76,0x78,0x8E,0xC1,0x80,0x65,0xE4,0x7D,0x66,0x58,0xF2,0xD9,0xE6,0x8B,0x78,0x74,0xB2,0x61,0xC4,0x01,0x76,0xD9,0xE0,0xBD,0x1C,0x1A,0x82,0x2F,0x66,0x89,0xC6,0xD8,0x3F,0xA4,0xE0,0x1C,0x81,0x49,0xB4,0x6A,0xCB,0x02,0xE8,0xAA,0x1E,0xB6,0xE0,0xFD,0xF3,0x90,0x6E,0x15,0xA5,0x07,0x84,0x79,0xAE,0xFF,0x6A,0x60,0x6D,0xB7,0x1C,0xA7,0x43,0x6A,0xFA,0x4D,0xBE,0x5E,0x4A,0xAF,0x36,0x4D,0x3C,0xA4,0xAB,0x6B,0x20,0x15,0x2C,0xA5,0x84,0x95,0x62,0xA2,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0x88,0xEC,0x1E,0xC9,0xE5,0xCC,0x1C,0xED,0x52,0xC0,0x54,0x7F,0xD5,0x0F,0x88,0x1A,0x0C,0x45,0x74,0x76,0xEF,0xD2,0x0C,0x9A,0x88,0x65,0x06,0xB0,0x14,0xE1,0x7A,0x64,0xEA,0xF9,0x82,0xCF,0xD6,0xF6,0x7A,0xE5,0xC8,0xBB,0xB2,0xFF,0xC2,0x3A,0xE6,0x34,0x99,0x01,0x42,0x69,0x4C,0x35,0x70,0xC6,0x0D,0x06,0xB6,0xF2,0x16,0xCE,0x40,0xD7,0x47,0x29,0x80,0x71,0x2D,0x1B,0x6A,0xD5,0xAA,0x16,0x60,0xB7,0xA6,0x8D,0x72,0xB7,0xC7,0x00,0xD0,0x1A,0xE9,0xC5,0x42,0x8F,0x3B,0x65,0x78,0xA8,0x60,0xA0,0x54,0x66,0xCD,0xFC,0xF4,0x4F,0xFD,0x26,0xC4,0x29,0x8B,0xC1,0xE8,0xB8,0x98,0x06,0x34,0x6D,0x64,0x83,0x5E,0x27,0x6C,0xDB,0x84,0xBC,0x5B,0x8C,0xE6,0x90,0x12,0x2D,0xB8,0x22,0x6B,0x0A,0x3E,0x62,0xFC,0xD9,0x82,0x50,0xAB,0x3F,0x58,0x78,0xE4,0xA5,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x5D,0x9D,0x8D,0x0C,0x0C,0x50,0x2C,0x0E,0x4E,0x68,0x0E,0x5A,0x3C,0xA4,0x33,0x94,0x73,0x11,0xC8,0x6A,0x0E,0x11,0xFF,0x58,0x22,0x67,0x95,0x1C,0x33,0x51,0x83,0x14,0xC5,0x28,0xF9,0xAC,0xF9,0x37,0x36,0x4C,0x8B,0x20,0x59,0xCE,0x10,0xB2,0xF7,0xE8,0x59,0x3C,0xD4,0xFC,0x59,0x65,0xC0,0xB8,0x22,0x06,0xEE,0xD2,0x18,0x1B,0x43,0xA4,0x1C,0x91,0xA1,0x98,0x4B,0x06,0xA3,0xBE,0x2B,0x6D,0x1A,0xF0,0xD7,0x0D,0x3B,0x24,0xEA,0x74,0x9D,0x82,0xC5,0xCA,0x71,0x0A,0xB0,0x4B,0xEE,0x1A,0x00,0x49,0x67,0xA0,0x93,0x97,0x66,0x32,0x49,0x32,0x2C,0xA8,0xF9,0xAE,0xA7,0xBE,0xE3,0xD8,0x7F,0x48,0x81,0x8B,0x5C,0xF6,0xC4,0x45,0x16,0x52,0xDC,0x6E,0x99,0xB2,0x5D,0x7B,0xC7,0xE8,0x42,0x62,0xAF,0x7A,0x26,0xFA,0x5F,0xEC,0xF9,0x4C,0x60,0x32,0xB9,0x73,0x98,0x5E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xEE,0x34,0x3B,0xE4,0xEA,0x19,0xB2,0xC0,0xBA,0x24,0x95,0x08,0x7C,0x60,0xFB,0x44,0x66,0x1A,0x98,0x6A,0x1F,0x4E,0xA1,0x9C,0x56,0x50,0x67,0xC8,0x09,0x04,0x89,0xAC,0x43,0x9E,0x9C,0x36,0x0B,0x99,0x11,0xF4,0xAD,0x16,0x0A,0xF0,0x61,0xD2,0x3E,0xDE,0xB0,0x12,0xD0,0xF6,0x2E,0xCA,0xF6,0x6A,0x4B,0x31,0xF3,0xD6,0x02,0xF8,0xD6,0x40,0x80,0xA0,0xED,0x40,0x52,0x56,0x7D,0x7C,0xEE,0xD6,0x5C,0xBC,0xC7,0x49,0x80,0x6E,0xB6,0x1B,0x55,0x4A,0x44,0x4D,0x14,0x6A,0x62,0x6C,0x13,0xB8,0x21,0x3E,0x42,0xA4,0xEF,0x7B,0xF2,0x82,0x2E,0xB3,0xA4,0x22,0x16,0xE1,0xBB,0x9E,0xF6,0x24,0x92,0x1C,0x45,0xA5,0x37,0x3C,0x6F,0x57,0x7D,0xA4,0xBB,0x5E,0xA8,0xDE,0x85,0xFB,0xD1,0x42,0xE6,0x2A,0x5F,0x74,0x2F,0x3D,0x04,0x2A,0x41,0x78,0xD6,0xE6,0x93,0x9E,0x75,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x36,0xAF,0xB0,0x2C,0x4F,0x28,0x9E,0x6A,0x44,0xEC,0xB9,0x42,0x0D,0xEB,0x01,0xE2,0xB4,0x9C,0x1C,0xD6,0x85,0xDE,0x37,0x12,0x92,0x2A,0xB0,0x34,0x5F,0x81,0x2E,0xD8,0x1B,0x7B,0xDA,0x5E,0x49,0xA1,0x59,0x18,0x1F,0xC5,0xE3,0x60,0x5A,0x4D,0x06,0xB8,0xD2,0x03,0x6F,0x74,0xB8,0x7E,0x53,0x56,0xBB,0xC0,0x60,0xD8,0xF2,0x0C,0x2B,0x38,0xE7,0x68,0xA7,0x6A,0x86,0x3C,0x2D,0x38,0x13,0xB0,0xBA,0xF4,0xB2,0xEE,0xCB,0xC8,0x23,0x8C,0x23,0x3E,0x4F,0x25,0x29,0xBA,0xFF,0x65,0xB3,0x16,0x00,0xA9,0x4C,0x04,0x3D,0xB3,0x8A,0xF8,0x32,0xE0,0x5B,0x4A,0x5C,0x79,0xE0,0x66,0x70,0xD4,0x81,0x0E,0x7E,0x13,0x31,0x36,0x73,0xD9,0x1D,0x28,0xC9,0x60,0x5D,0x04,0x26,0x26,0x28,0x0C,0x73,0xF3,0x6B,0x60,0xBB,0x07,0x57,0xEE,0xAB,0x11,0x33,0xFE,0x4E,0xF6,0x79,0xDA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x83,0x96,0x0C,0x2A,0xE6,0xED,0xA8,0x1E,0x58,0x80,0x30,0x60,0xCB,0xD2,0xF5,0x54,0xC9,0xF1,0x37,0x0A,0x24,0x71,0xD0,0xBC,0x51,0x70,0x93,0x12,0x43,0x84,0xE4,0x5E,0x2E,0xAA,0xCE,0x64,0x18,0x82,0x3B,0x1C,0xBB,0x23,0xC9,0x04,0x73,0xDA,0x81,0xFA,0xA1,0xF6,0xDE,0xDA,0x9A,0x7B,0xDA,0x52,0x2D,0x00,0xEB,0xCC,0x3D,0xA3,0xB0,0x42,0xAF,0x4F,0x12,0xF8,0x66,0x4B,0x53,0x6C,0x7F,0x04,0xB2,0xF0,0xAF,0xC9,0xD9,0x68,0xDE,0x11,0xEA,0x04,0x08,0x74,0xFE,0xC6,0x06,0x14,0xEF,0x08,0xD1,0xE9,0xBF,0x1E,0x53,0xCB,0xF9,0xD6,0xED,0x03,0x64,0x26,0xB0,0xD4,0x50,0xF4,0x3D,0xB2,0xD3,0x74,0x8C,0x97,0x96,0x2E,0x68,0x04,0x94,0xD0,0xAF,0x7B,0xC0,0x7E,0xA9,0xC6,0x32,0x94,0x80,0xC8,0x67,0x5E,0x20,0x5E,0x7F,0x8A,0x07,0x6A,0x1F,0x5C,0xCD,0xBB,0xAF,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x40,0xDF,0x23,0xA8,0x4B,0x37,0x90,0x62,0x9E,0xB2,0x67,0xB4,0xE2,0xEA,0x3B,0xAC,0xFC,0xF2,0x5D,0x84,0x27,0xCB,0x49,0x9A,0x5F,0xCC,0x7D,0x78,0x26,0x3B,0x7D,0xF0,0xC9,0x34,0xB2,0x02,0x83,0x08,0x1A,0x98,0x62,0x61,0xFA,0xC0,0xAF,0x0A,0x20,0x38,0xA2,0x60,0x9A,0x86,0xF4,0x37,0xBB,0xAA,0xE7,0x36,0x78,0xAC,0xDD,0xC8,0x02,0xFA,0x63,0x69,0x93,0x66,0xC3,0x09,0xF9,0xEE,0x7B,0x4B,0x2D,0x30,0xC6,0x48,0xA7,0xA8,0x42,0x26,0x0D,0xFC,0xD1,0x9B,0x90,0x7C,0xB6,0x74,0x61,0x14,0x76,0xEE,0xC2,0x60,0x58,0x36,0x86,0xAC,0xCA,0x4C,0x27,0x64,0x33,0x38,0x3F,0x34,0xB1,0xE2,0xC2,0x68,0xC3,0x1A,0x1D,0x2C,0x4D,0x47,0xFB,0x54,0x46,0xCF,0xFF,0x64,0xBC,0x3B,0x59,0x6C,0x28,0x53,0xAC,0xD8,0x8E,0x1E,0x2D,0x30,0x0D,0xE4,0x74,0x58,0xAC,0xE5,0x21,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x25,0xA2,0xD6,0xC2,0x28,0x99,0x86,0xE0,0xF5,0xE2,0x2E,0x60,0xA1,0x25,0x87,0x22,0xF1,0x93,0x13,0x48,0x5E,0x0E,0xB4,0x9C,0x65,0x0B,0xA9,0x4A,0x32,0x2D,0x50,0x5E,0xA1,0x8B,0xA9,0xB6,0x99,0x0D,0xC4,0xB4,0x47,0x07,0xEE,0x54,0x89,0x4E,0xF3,0x76,0x8B,0x5B,0xF5,0x8A,0xF0,0x67,0x45,0xE2,0xE7,0xA0,0xA4,0xCE,0xE5,0xD7,0x82,0xB0,0xAE,0xCB,0xF9,0x5C,0x73,0xF8,0x36,0x6C,0x92,0x02,0x32,0xC2,0xE5,0x47,0x37,0x90,0x02,0x56,0x16,0xFC,0xA0,0x74,0xEF,0xBA,0x87,0x1C,0x97,0x8E,0x66,0xC7,0xA3,0xA2,0x87,0xB7,0xA3,0x66,0x3A,0x89,0xDA,0xB4,0x82,0xD9,0xF4,0xE8,0x55,0x43,0x2A,0xE8,0xD1,0x4A,0x01,0x14,0x10,0xC1,0x0C,0x7E,0x52,0xEA,0x88,0xF6,0xDA,0x2B,0x93,0x92,0x62,0x2D,0xDF,0x30,0x09,0xF0,0x05,0xE8,0x63,0xFB,0xE1,0x8C,0x94,0x67,0x64,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x96,0xDF,0x8B,0xE0,0x90,0x80,0x3B,0xD8,0xC7,0x29,0xF7,0xE6,0x53,0x45,0x18,0x20,0xF2,0x8C,0x8D,0x6A,0xAA,0xE9,0xCC,0x98,0x4C,0x4B,0x9B,0xAC,0x81,0x7C,0x2D,0x16,0x48,0x6C,0x43,0xA8,0xA3,0xB1,0xFD,0x76,0x74,0xE6,0xD9,0x36,0x4E,0x44,0x22,0x6C,0x33,0x02,0xD5,0xA6,0xD6,0x91,0x23,0xDC,0x31,0x7B,0xCB,0xA6,0x18,0x19,0x8C,0xFA,0xA6,0x35,0xFC,0x2E,0x01,0xD5,0x7E,0x9C,0xC6,0xC6,0xB3,0x02,0xBD,0xBB,0x5C,0x0C,0xCE,0x52,0x56,0xD4,0x53,0x2B,0x63,0x78,0x05,0x40,0x2C,0xAA,0x25,0x63,0xF0,0xBC,0x94,0x2E,0x3C,0xF2,0x45,0x67,0x98,0x32,0xC7,0xFE,0x9C,0x36,0x7E,0xC6,0x00,0x18,0x4D,0x9C,0x69,0x30,0xA6,0x56,0x0C,0xE4,0xE6,0x08,0x92,0x4C,0x09,0x2E,0x23,0x6E,0x29,0x43,0xED,0x5A,0x2D,0x58,0xB2,0xFE,0xC7,0x18,0xCB,0x90,0x17,0x3D,0x24,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x32,0x56,0x28,0x64,0x22,0x8E,0xEC,0xB0,0xEB,0x21,0xBD,0x5A,0xCD,0x3A,0x7D,0xA8,0xAD,0xA9,0x84,0x92,0x5E,0x0F,0x77,0xA8,0x89,0x42,0xCF,0xC4,0x9D,0xF8,0xA3,0x2E,0xF0,0xF6,0x94,0xC2,0x09,0xFF,0x66,0xE8,0x41,0x8B,0xA6,0xE8,0x40,0x2B,0x4A,0xB4,0x75,0x3E,0xE6,0x92,0xAA,0x1D,0x84,0xAC,0x9C,0x20,0x8E,0xB0,0xB5,0xD0,0xC4,0xC8,0x35,0x95,0x06,0xAA,0x65,0xA9,0xD6,0x16,0x4C,0x94,0x3C,0x0C,0x4E,0x9C,0xDC,0xE6,0xA1,0x59,0x8C,0x60,0xB2,0xAB,0x10,0x30,0x44,0x4E,0x98,0xF8,0xE5,0xDA,0xB4,0xFA,0x6C,0x7E,0xB1,0xCA,0x97,0xC9,0xA9,0x08,0x88,0x66,0xC4,0x76,0x10,0xF5,0x1D,0x9E,0xF0,0x58,0x00,0xCE,0xE2,0x68,0x5D,0xD8,0x49,0xA1,0xD8,0xA6,0x07,0xC2,0x99,0x14,0xD2,0x23,0x2F,0xB2,0x80,0x98,0xF2,0x86,0xE6,0x60,0x62,0x18,0x07,0x19,0x11,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x75,0xB4,0xD8,0xF8,0x02,0x87,0x27,0xBA,0x44,0x67,0x4F,0xB8,0x1C,0x6E,0xEA,0x4A,0xA2,0x9F,0x5C,0x40,0xDC,0x33,0x09,0x54,0x45,0x62,0x2D,0x12,0xE1,0x3A,0x1A,0xC8,0xBF,0x14,0x18,0xDA,0x33,0xB4,0x7C,0x80,0x7A,0xAC,0x98,0x90,0x04,0xE0,0x01,0xFE,0x39,0xB6,0xCE,0xA0,0x63,0x98,0x01,0x36,0x15,0x76,0x78,0x8E,0xC1,0x80,0x65,0xE4,0x7D,0x66,0x58,0xF2,0xD9,0xE6,0x8B,0x78,0x74,0xB2,0x61,0xC4,0x01,0x76,0xD9,0xE0,0xBD,0x1C,0x1A,0x82,0x2F,0x66,0x89,0xC6,0xD8,0x3F,0xA4,0xE0,0x1C,0x81,0x49,0xB4,0x6A,0xCB,0x02,0xE8,0xAA,0x1E,0xB6,0xE0,0xFD,0xF3,0x90,0x6E,0x15,0xA5,0x07,0x84,0x79,0xAE,0xFF,0x6A,0x60,0x6D,0xB7,0x1C,0xA7,0x43,0x6A,0xFA,0x4D,0xBE,0x5E,0x4A,0xAF,0x36,0x4D,0x3C,0xA4,0xAB,0x6B,0x20,0x15,0x2C,0xA5,0x84,0x95,0x62,0xA2,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0x88,0xEC,0x1E,0xC9,0xE5,0xCC,0x1C,0xED,0x52,0xC0,0x54,0x7F,0xD5,0x0F,0x88,0x1A,0x0C,0x45,0x74,0x76,0xEF,0xD2,0x0C,0x9A,0x88,0x65,0x06,0xB0,0x14,0xE1,0x7A,0x64,0xEA,0xF9,0x82,0xCF,0xD6,0xF6,0x7A,0xE5,0xC8,0xBB,0xB2,0xFF,0xC2,0x3A,0xE6,0x34,0x99,0x01,0x42,0x69,0x4C,0x35,0x70,0xC6,0x0D,0x06,0xB6,0xF2,0x16,0xCE,0x40,0xD7,0x47,0x29,0x80,0x71,0x2D,0x1B,0x6A,0xD5,0xAA,0x16,0x60,0xB7,0xA6,0x8D,0x72,0xB7,0xC7,0x00,0xD0,0x1A,0xE9,0xC5,0x42,0x8F,0x3B,0x65,0x78,0xA8,0x60,0xA0,0x54,0x66,0xCD,0xFC,0xF4,0x4F,0xFD,0x26,0xC4,0x29,0x8B,0xC1,0xE8,0xB8,0x98,0x06,0x34,0x6D,0x64,0x83,0x5E,0x27,0x6C,0xDB,0x84,0xBC,0x5B,0x8C,0xE6,0x90,0x12,0x2D,0xB8,0x22,0x6B,0x0A,0x3E,0x62,0xFC,0xD9,0x82,0x50,0xAB,0x3F,0x58,0x78,0xE4,0xA5,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x5D,0x9D,0x8D,0x0C,0x0C,0x50,0x2C,0x0E,0x4E,0x68,0x0E,0x5A,0x3C,0xA4,0x33,0x94,0x73,0x11,0xC8,0x6A,0x0E,0x11,0xFF,0x58,0x22,0x67,0x95,0x1C,0x33,0x51,0x83,0x14,0xC5,0x28,0xF9,0xAC,0xF9,0x37,0x36,0x4C,0x8B,0x20,0x59,0xCE,0x10,0xB2,0xF7,0xE8,0x59,0x3C,0xD4,0xFC,0x59,0x65,0xC0,0xB8,0x22,0x06,0xEE,0xD2,0x18,0x1B,0x43,0xA4,0x1C,0x91,0xA1,0x98,0x4B,0x06,0xA3,0xBE,0x2B,0x6D,0x1A,0xF0,0xD7,0x0D,0x3B,0x24,0xEA,0x74,0x9D,0x82,0xC5,0xCA,0x71,0x0A,0xB0,0x4B,0xEE,0x1A,0x00,0x49,0x67,0xA0,0x93,0x97,0x66,0x32,0x49,0x32,0x2C,0xA8,0xF9,0xAE,0xA7,0xBE,0xE3,0xD8,0x7F,0x48,0x81,0x8B,0x5C,0xF6,0xC4,0x45,0x16,0x52,0xDC,0x6E,0x99,0xB2,0x5D,0x7B,0xC7,0xE8,0x42,0x62,0xAF,0x7A,0x26,0xFA,0x5F,0xEC,0xF9,0x4C,0x60,0x32,0xB9,0x73,0x98,0x5E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xEE,0x34,0x3B,0xE4,0xEA,0x19,0xB2,0xC0,0xBA,0x24,0x95,0x08,0x7C,0x60,0xFB,0x44,0x66,0x1A,0x98,0x6A,0x1F,0x4E,0xA1,0x9C,0x56,0x50,0x67,0xC8,0x09,0x04,0x89,0xAC,0x43,0x9E,0x9C,0x36,0x0B,0x99,0x11,0xF4,0xAD,0x16,0x0A,0xF0,0x61,0xD2,0x3E,0xDE,0xB0,0x12,0xD0,0xF6,0x2E,0xCA,0xF6,0x6A,0x4B,0x31,0xF3,0xD6,0x02,0xF8,0xD6,0x40,0x80,0xA0,0xED,0x40,0x52,0x56,0x7D,0x7C,0xEE,0xD6,0x5C,0xBC,0xC7,0x49,0x80,0x6E,0xB6,0x1B,0x55,0x4A,0x44,0x4D,0x14,0x6A,0x62,0x6C,0x13,0xB8,0x21,0x3E,0x42,0xA4,0xEF,0x7B,0xF2,0x82,0x2E,0xB3,0xA4,0x22,0x16,0xE1,0xBB,0x9E,0xF6,0x24,0x92,0x1C,0x45,0xA5,0x37,0x3C,0x6F,0x57,0x7D,0xA4,0xBB,0x5E,0xA8,0xDE,0x85,0xFB,0xD1,0x42,0xE6,0x2A,0x5F,0x74,0x2F,0x3D,0x04,0x2A,0x41,0x78,0xD6,0xE6,0x93,0x9E,0x75,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x36,0xAF,0xB0,0x2C,0x4F,0x28,0x9E,0x6A,0x44,0xEC,0xB9,0x42,0x0D,0xEB,0x01,0xE2,0xB4,0x9C,0x1C,0xD6,0x85,0xDE,0x37,0x12,0x92,0x2A,0xB0,0x34,0x5F,0x81,0x2E,0xD8,0x1B,0x7B,0xDA,0x5E,0x49,0xA1,0x59,0x18,0x1F,0xC5,0xE3,0x60,0x5A,0x4D,0x06,0xB8,0xD2,0x03,0x6F,0x74,0xB8,0x7E,0x53,0x56,0xBB,0xC0,0x60,0xD8,0xF2,0x0C,0x2B,0x38,0xE7,0x68,0xA7,0x6A,0x86,0x3C,0x2D,0x38,0x13,0xB0,0xBA,0xF4,0xB2,0xEE,0xCB,0xC8,0x23,0x8C,0x23,0x3E,0x4F,0x25,0x29,0xBA,0xFF,0x65,0xB3,0x16,0x00,0xA9,0x4C,0x04,0x3D,0xB3,0x8A,0xF8,0x32,0xE0,0x5B,0x4A,0x5C,0x79,0xE0,0x66,0x70,0xD4,0x81,0x0E,0x7E,0x13,0x31,0x36,0x73,0xD9,0x1D,0x28,0xC9,0x60,0x5D,0x04,0x26,0x26,0x28,0x0C,0x73,0xF3,0x6B,0x60,0xBB,0x07,0x57,0xEE,0xAB,0x11,0x33,0xFE,0x4E,0xF6,0x79,0xDA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x83,0x96,0x0C,0x2A,0xE6,0xED,0xA8,0x1E,0x58,0x80,0x30,0x60,0xCB,0xD2,0xF5,0x54,0xC9,0xF1,0x37,0x0A,0x24,0x71,0xD0,0xBC,0x51,0x70,0x93,0x12,0x43,0x84,0xE4,0x5E,0x2E,0xAA,0xCE,0x64,0x18,0x82,0x3B,0x1C,0xBB,0x23,0xC9,0x04,0x73,0xDA,0x81,0xFA,0xA1,0xF6,0xDE,0xDA,0x9A,0x7B,0xDA,0x52,0x2D,0x00,0xEB,0xCC,0x3D,0xA3,0xB0,0x42,0xAF,0x4F,0x12,0xF8,0x66,0x4B,0x53,0x6C,0x7F,0x04,0xB2,0xF0,0xAF,0xC9,0xD9,0x68,0xDE,0x11,0xEA,0x04,0x08,0x74,0xFE,0xC6,0x06,0x14,0xEF,0x08,0xD1,0xE9,0xBF,0x1E,0x53,0xCB,0xF9,0xD6,0xED,0x03,0x64,0x26,0xB0,0xD4,0x50,0xF4,0x3D,0xB2,0xD3,0x74,0x8C,0x97,0x96,0x2E,0x68,0x04,0x94,0xD0,0xAF,0x7B,0xC0,0x7E,0xA9,0xC6,0x32,0x94,0x80,0xC8,0x67,0x5E,0x20,0x5E,0x7F,0x8A,0x07,0x6A,0x1F,0x5C,0xCD,0xBB,0xAF,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x40,0xDF,0x23,0xA8,0x4B,0x37,0x90,0x62,0x9E,0xB2,0x67,0xB4,0xE2,0xEA,0x3B,0xAC,0xFC,0xF2,0x5D,0x84,0x27,0xCB,0x49,0x9A,0x5F,0xCC,0x7D,0x78,0x26,0x3B,0x7D,0xF0,0xC9,0x34,0xB2,0x02,0x83,0x08,0x1A,0x98,0x62,0x61,0xFA,0xC0,0xAF,0x0A,0x20,0x38,0xA2,0x60,0x9A,0x86,0xF4,0x37,0xBB,0xAA,0xE7,0x36,0x78,0xAC,0xDD,0xC8,0x02,0xFA,0x63,0x69,0x93,0x66,0xC3,0x09,0xF9,0xEE,0x7B,0x4B,0x2D,0x30,0xC6,0x48,0xA7,0xA8,0x42,0x26,0x0D,0xFC,0xD1,0x9B,0x90,0x7C,0xB6,0x74,0x61,0x14,0x76,0xEE,0xC2,0x60,0x58,0x36,0x86,0xAC,0xCA,0x4C,0x27,0x64,0x33,0x38,0x3F,0x34,0xB1,0xE2,0xC2,0x68,0xC3,0x1A,0x1D,0x2C,0x4D,0x47,0xFB,0x54,0x46,0xCF,0xFF,0x64,0xBC,0x3B,0x59,0x6C,0x28,0x53,0xAC,0xD8,0x8E,0x1E,0x2D,0x30,0x0D,0xE4,0x74,0x58,0xAC,0xE5,0x21,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x25,0xA2,0xD6,0xC2,0x28,0x99,0x86,0xE0,0xF5,0xE2,0x2E,0x60,0xA1,0x25,0x87,0x22,0xF1,0x93,0x13,0x48,0x5E,0x0E,0xB4,0x9C,0x65,0x0B,0xA9,0x4A,0x32,0x2D,0x50,0x5E,0xA1,0x8B,0xA9,0xB6,0x99,0x0D,0xC4,0xB4,0x47,0x07,0xEE,0x54,0x89,0x4E,0xF3,0x76,0x8B,0x5B,0xF5,0x8A,0xF0,0x67,0x45,0xE2,0xE7,0xA0,0xA4,0xCE,0xE5,0xD7,0x82,0xB0,0xAE,0xCB,0xF9,0x5C,0x73,0xF8,0x36,0x6C,0x92,0x02,0x32,0xC2,0xE5,0x47,0x37,0x90,0x02,0x56,0x16,0xFC,0xA0,0x74,0xEF,0xBA,0x87,0x1C,0x97,0x8E,0x66,0xC7,0xA3,0xA2,0x87,0xB7,0xA3,0x66,0x3A,0x89,0xDA,0xB4,0x82,0xD9,0xF4,0xE8,0x55,0x43,0x2A,0xE8,0xD1,0x4A,0x01,0x14,0x10,0xC1,0x0C,0x7E,0x52,0xEA,0x88,0xF6,0xDA,0x2B,0x93,0x92,0x62,0x2D,0xDF,0x30,0x09,0xF0,0x05,0xE8,0x63,0xFB,0xE1,0x8C,0x94,0x67,0x64,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x96,0xDF,0x8B,0xE0,0x90,0x80,0x3B,0xD8,0xC7,0x29,0xF7,0xE6,0x53,0x45,0x18,0x20,0xF2,0x8C,0x8D,0x6A,0xAA,0xE9,0xCC,0x98,0x4C,0x4B,0x9B,0xAC,0x81,0x7C,0x2D,0x16,0x48,0x6C,0x43,0xA8,0xA3,0xB1,0xFD,0x76,0x74,0xE6,0xD9,0x36,0x4E,0x44,0x22,0x6C,0x33,0x02,0xD5,0xA6,0xD6,0x91,0x23,0xDC,0x31,0x7B,0xCB,0xA6,0x18,0x19,0x8C,0xFA,0xA6,0x35,0xFC,0x2E,0x01,0xD5,0x7E,0x9C,0xC6,0xC6,0xB3,0x02,0xBD,0xBB,0x5C,0x0C,0xCE,0x52,0x56,0xD4,0x53,0x2B,0x63,0x78,0x05,0x40,0x2C,0xAA,0x25,0x63,0xF0,0xBC,0x94,0x2E,0x3C,0xF2,0x45,0x67,0x98,0x32,0xC7,0xFE,0x9C,0x36,0x7E,0xC6,0x00,0x18,0x4D,0x9C,0x69,0x30,0xA6,0x56,0x0C,0xE4,0xE6,0x08,0x92,0x4C,0x09,0x2E,0x23,0x6E,0x29,0x43,0xED,0x5A,0x2D,0x58,0xB2,0xFE,0xC7,0x18,0xCB,0x90,0x17,0x3D,0x24,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x32,0x56,0x28,0x64,0x22,0x8E,0xEC,0xB0,0xEB,0x21,0xBD,0x5A,0xCD,0x3A,0x7D,0xA8,0xAD,0xA9,0x84,0x92,0x5E,0x0F,0x77,0xA8,0x89,0x42,0xCF,0xC4,0x9D,0xF8,0xA3,0x2E,0xF0,0xF6,0x94,0xC2,0x09,0xFF,0x66,0xE8,0x41,0x8B,0xA6,0xE8,0x40,0x2B,0x4A,0xB4,0x75,0x3E,0xE6,0x92,0xAA,0x1D,0x84,0xAC,0x9C,0x20,0x8E,0xB0,0xB5,0xD0,0xC4,0xC8,0x35,0x95,0x06,0xAA,0x65,0xA9,0xD6,0x16,0x4C,0x94,0x3C,0x0C,0x4E,0x9C,0xDC,0xE6,0xA1,0x59,0x8C,0x60,0xB2,0xAB,0x10,0x30,0x44,0x4E,0x98,0xF8,0xE5,0xDA,0xB4,0xFA,0x6C,0x7E,0xB1,0xCA,0x97,0xC9,0xA9,0x08,0x88,0x66,0xC4,0x76,0x10,0xF5,0x1D,0x9E,0xF0,0x58,0x00,0xCE,0xE2,0x68,0x5D,0xD8,0x49,0xA1,0xD8,0xA6,0x07,0xC2,0x99,0x14,0xD2,0x23,0x2F,0xB2,0x80,0x98,0xF2,0x86,0xE6,0x60,0x62,0x18,0x07,0x19,0x11,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x75,0xB4,0xD8,0xF8,0x02,0x87,0x27,0xBA,0x44,0x67,0x4F,0xB8,0x1C,0x6E,0xEA,0x4A,0xA2,0x9F,0x5C,0x40,0xDC,0x33,0x09,0x54,0x45,0x62,0x2D,0x12,0xE1,0x3A,0x1A,0xC8,0xBF,0x14,0x18,0xDA,0x33,0xB4,0x7C,0x80,0x7A,0xAC,0x98,0x90,0x04,0xE0,0x01,0xFE,0x39,0xB6,0xCE,0xA0,0x63,0x98,0x01,0x36,0x15,0x76,0x78,0x8E,0xC1,0x80,0x65,0xE4,0x7D,0x66,0x58,0xF2,0xD9,0xE6,0x8B,0x78,0x74,0xB2,0x61,0xC4,0x01,0x76,0xD9,0xE0,0xBD,0x1C,0x1A,0x82,0x2F,0x66,0x89,0xC6,0xD8,0x3F,0xA4,0xE0,0x1C,0x81,0x49,0xB4,0x6A,0xCB,0x02,0xE8,0xAA,0x1E,0xB6,0xE0,0xFD,0xF3,0x90,0x6E,0x15,0xA5,0x07,0x84,0x79,0xAE,0xFF,0x6A,0x60,0x6D,0xB7,0x1C,0xA7,0x43,0x6A,0xFA,0x4D,0xBE,0x5E,0x4A,0xAF,0x36,0x4D,0x3C,0xA4,0xAB,0x6B,0x20,0x15,0x2C,0xA5,0x84,0x95,0x62,0xA2,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0x88,0xEC,0x1E,0xC9,0xE5,0xCC,0x1C,0xED,0x52,0xC0,0x54,0x7F,0xD5,0x0F,0x88,0x1A,0x0C,0x45,0x74,0x76,0xEF,0xD2,0x0C,0x9A,0x88,0x65,0x06,0xB0,0x14,0xE1,0x7A,0x64,0xEA,0xF9,0x82,0xCF,0xD6,0xF6,0x7A,0xE5,0xC8,0xBB,0xB2,0xFF,0xC2,0x3A,0xE6,0x34,0x99,0x01,0x42,0x69,0x4C,0x35,0x70,0xC6,0x0D,0x06,0xB6,0xF2,0x16,0xCE,0x40,0xD7,0x47,0x29,0x80,0x71,0x2D,0x1B,0x6A,0xD5,0xAA,0x16,0x60,0xB7,0xA6,0x8D,0x72,0xB7,0xC7,0x00,0xD0,0x1A,0xE9,0xC5,0x42,0x8F,0x3B,0x65,0x78,0xA8,0x60,0xA0,0x54,0x66,0xCD,0xFC,0xF4,0x4F,0xFD,0x26,0xC4,0x29,0x8B,0xC1,0xE8,0xB8,0x98,0x06,0x34,0x6D,0x64,0x83,0x5E,0x27,0x6C,0xDB,0x84,0xBC,0x5B,0x8C,0xE6,0x90,0x12,0x2D,0xB8,0x22,0x6B,0x0A,0x3E,0x62,0xFC,0xD9,0x82,0x50,0xAB,0x3F,0x58,0x78,0xE4,0xA5,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x5D,0x9D,0x8D,0x0C,0x0C,0x50,0x2C,0x0E,0x4E,0x68,0x0E,0x5A,0x3C,0xA4,0x33,0x94,0x73,0x11,0xC8,0x6A,0x0E,0x11,0xFF,0x58,0x22,0x67,0x95,0x1C,0x33,0x51,0x83,0x14,0xC5,0x28,0xF9,0xAC,0xF9,0x37,0x36,0x4C,0x8B,0x20,0x59,0xCE,0x10,0xB2,0xF7,0xE8,0x59,0x3C,0xD4,0xFC,0x59,0x65,0xC0,0xB8,0x22,0x06,0xEE,0xD2,0x18,0x1B,0x43,0xA4,0x1C,0x91,0xA1,0x98,0x4B,0x06,0xA3,0xBE,0x2B,0x6D,0x1A,0xF0,0xD7,0x0D,0x3B,0x24,0xEA,0x74,0x9D,0x82,0xC5,0xCA,0x71,0x0A,0xB0,0x4B,0xEE,0x1A,0x00,0x49,0x67,0xA0,0x93,0x97,0x66,0x32,0x49,0x32,0x2C,0xA8,0xF9,0xAE,0xA7,0xBE,0xE3,0xD8,0x7F,0x48,0x81,0x8B,0x5C,0xF6,0xC4,0x45,0x16,0x52,0xDC,0x6E,0x99,0xB2,0x5D,0x7B,0xC7,0xE8,0x42,0x62,0xAF,0x7A,0x26,0xFA,0x5F,0xEC,0xF9,0x4C,0x60,0x32,0xB9,0x73,0x98,0x5E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xEE,0x34,0x3B,0xE4,0xEA,0x19,0xB2,0xC0,0xBA,0x24,0x95,0x08,0x7C,0x60,0xFB,0x44,0x66,0x1A,0x98,0x6A,0x1F,0x4E,0xA1,0x9C,0x56,0x50,0x67,0xC8,0x09,0x04,0x89,0xAC,0x43,0x9E,0x9C,0x36,0x0B,0x99,0x11,0xF4,0xAD,0x16,0x0A,0xF0,0x61,0xD2,0x3E,0xDE,0xB0,0x12,0xD0,0xF6,0x2E,0xCA,0xF6,0x6A,0x4B,0x31,0xF3,0xD6,0x02,0xF8,0xD6,0x40,0x80,0xA0,0xED,0x40,0x52,0x56,0x7D,0x7C,0xEE,0xD6,0x5C,0xBC,0xC7,0x49,0x80,0x6E,0xB6,0x1B,0x55,0x4A,0x44,0x4D,0x14,0x6A,0x62,0x6C,0x13,0xB8,0x21,0x3E,0x42,0xA4,0xEF,0x7B,0xF2,0x82,0x2E,0xB3,0xA4,0x22,0x16,0xE1,0xBB,0x9E,0xF6,0x24,0x92,0x1C,0x45,0xA5,0x37,0x3C,0x6F,0x57,0x7D,0xA4,0xBB,0x5E,0xA8,0xDE,0x85,0xFB,0xD1,0x42,0xE6,0x2A,0x5F,0x74,0x2F,0x3D,0x04,0x2A,0x41,0x78,0xD6,0xE6,0x93,0x9E,0x75,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x36,0xAF,0xB0,0x2C,0x4F,0x28,0x9E,0x6A,0x44,0xEC,0xB9,0x42,0x0D,0xEB,0x01,0xE2,0xB4,0x9C,0x1C,0xD6,0x85,0xDE,0x37,0x12,0x92,0x2A,0xB0,0x34,0x5F,0x81,0x2E,0xD8,0x1B,0x7B,0xDA,0x5E,0x49,0xA1,0x59,0x18,0x1F,0xC5,0xE3,0x60,0x5A,0x4D,0x06,0xB8,0xD2,0x03,0x6F,0x74,0xB8,0x7E,0x53,0x56,0xBB,0xC0,0x60,0xD8,0xF2,0x0C,0x2B,0x38,0xE7,0x68,0xA7,0x6A,0x86,0x3C,0x2D,0x38,0x13,0xB0,0xBA,0xF4,0xB2,0xEE,0xCB,0xC8,0x23,0x8C,0x23,0x3E,0x4F,0x25,0x29,0xBA,0xFF,0x65,0xB3,0x16,0x00,0xA9,0x4C,0x04,0x3D,0xB3,0x8A,0xF8,0x32,0xE0,0x5B,0x4A,0x5C,0x79,0xE0,0x66,0x70,0xD4,0x81,0x0E,0x7E,0x13,0x31,0x36,0x73,0xD9,0x1D,0x28,0xC9,0x60,0x5D,0x04,0x26,0x26,0x28,0x0C,0x73,0xF3,0x6B,0x60,0xBB,0x07,0x57,0xEE,0xAB,0x11,0x33,0xFE,0x4E,0xF6,0x79,0xDA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
ee12b079 17:f410d4327247 76
ee12b079 17:f410d4327247 77 unsigned char Segment[] = {0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,0x65,0xD3,0x06,0x08,0xBB,0xE7,0xCD,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0x9D,0xEB,0x24,0xB6,0xAD,0x59,0x15,0xFA,0xD0,0x33,0x6E,0x3A,0x69,0x60,0x10,0xF8,0x58,0x96,0x58,0x5C,0x60,0xC6,0x9D,0xA2,0x5E,0x5D,0x19,0x54,0x21,0xEC,0xCC,0xC4,0x97,0x3B,0x6E,0xC2,0xC8,0x22,0x0E,0x7E,0x39,0xE8,0x8E,0x66,0x29,0x1B,0x1A,0x90,0xD8,0x00,0xF1,0x5E,0x6F,0x6F,0x18,0xC0,0x9C,0xA9,0xE6,0x7C,0xCA,0xD2,0x42,0xAA,0x91,0xBA,0x4D,0x56,0xA3,0x11,0x20,0x58,0x28,0x73,0xD8,0x08,0x5A,0xFC,0xFF,0x14,0x3C,0xF8,0x6B,0x66,0xF8,0x8C,0x55,0x0C,0xB2,0x17,0x52,0x92,0x53,0xF6,0x65,0x72,0x3B,0xE0,0xAB,0xBA,0xDD,0x58,0x00,0x54,0x2E,0x1C,0xD6,0xE2,0x2D,0xE8,0x5D,0xDA,0x61,0x3A,0x06,0x04,0xE3,0x44,0x20,0x44,0x31,0x4E,0xE6,0x22,0x42,0xD1,0x01,0x70,0x65,0x65,0xA1,0x46,0xFE,0x41,0xB7,0x54,0xC4,0xAE,0xE4,0xEE,0x70,0x35,0x08,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x20,0xE5,0xEE,0x00,0xB0,0x1E,0x45,0xCC,0xCE,0xC2,0x5F,0x30,0x61,0x34,0x16,0x54,0xE2,0xAA,0x2C,0xFE,0xF3,0x32,0xC2,0x6A,0x09,0x7D,0xC5,0x6C,0x25,0x02,0x14,0x5A,0x0E,0xA8,0x82,0x78,0x4E,0x8D,0xE7,0xBE,0x04,0xCB,0x07,0x8C,0x4C,0xDA,0x9D,0x62,0xAD,0xB6,0x91,0x40,0x2A,0x9E,0x83,0x86,0xDC,0x2E,0x7C,0x24,0x60,0x32,0x29,0x0C,0x29,0x17,0xA6,0x46,0x0A,0x95,0x1E,0xF0,0xA7,0xC9,0xC5,0x08,0x3E,0x8E,0x14,0xBA,0x69,0x6B,0x53,0x40,0x96,0x64,0x13,0x6A,0x7D,0xD8,0x40,0xC4,0x23,0xFB,0x4E,0x0C,0x65,0xFD,0x03,0x9E,0x4B,0xFC,0x5D,0x80,0x3A,0x54,0x88,0x5E,0xF3,0x3D,0x9F,0xA4,0xB1,0x07,0x8B,0x16,0x6C,0x97,0x07,0xE8,0x5A,0x17,0x95,0xFC,0xCA,0x1F,0x8B,0x3E,0x29,0xE7,0xD6,0xBE,0x3C,0xEE,0x30,0x28,0x5A,0xC9,0xE2,0x36,0xDE,0x31,0x41,0x7A,0x30,0xED,0x7B,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
ee12b079 17:f410d4327247 78 unsigned char EOS[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x59,0x97,0x4C,0x18,0x22,0xEF,0x9F,0x34,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
ee12b079 17:f410d4327247 79 unsigned char max_segment = (65535 - 120)/(48 + 40*134);//12
ee12b079 17:f410d4327247 80
ee12b079 17:f410d4327247 81
ee12b079 17:f410d4327247 82
ee12b079 17:f410d4327247 83
krishanprajapat 0:578d0f87988f 84
krishanprajapat 0:578d0f87988f 85 unsigned char buffer_112[112];
krishanprajapat 0:578d0f87988f 86 //int initialise_card();
krishanprajapat 0:578d0f87988f 87 //int disk_initialize();
krishanprajapat 0:578d0f87988f 88
ee12b079 17:f410d4327247 89
ee12b079 17:f410d4327247 90 #define reset_flags {\
ee12b079 14:eee578d96cfe 91 Adf_data_counter=0;\
ee12b079 14:eee578d96cfe 92 status =0;\
ee12b079 14:eee578d96cfe 93 cmd_err_cnt=0;\
ee12b079 14:eee578d96cfe 94 data_length;\
ee12b079 14:eee578d96cfe 95 state_err_cnt=0;\
ee12b079 14:eee578d96cfe 96 miso_err_cnt=0;\
ee12b079 14:eee578d96cfe 97 hw_reset_err_cnt=0;\
ee12b079 14:eee578d96cfe 98 counter =0;\
ee12b079 14:eee578d96cfe 99 bcn_flag=0;\
ee12b079 14:eee578d96cfe 100 bbram_flag=0;\
ee12b079 14:eee578d96cfe 101 stop_transmission=false;\
ee12b079 14:eee578d96cfe 102 }
ee12b079 17:f410d4327247 103 int segment_len=sizeof(Segment);
ee12b079 17:f410d4327247 104 int EOS_len=sizeof(EOS);
ee12b079 17:f410d4327247 105 int total_no_of_segments=240;
ee12b079 17:f410d4327247 106 int no_of_segments=0;
ee12b079 17:f410d4327247 107 bool EOS_f=false;
ee12b079 17:f410d4327247 108 bool segment_f=true;
ee12b079 17:f410d4327247 109 #define restart_adf {\
ee12b079 17:f410d4327247 110 gCS_ADF=0;\
ee12b079 17:f410d4327247 111 spi.write(CMD_PHY_ON);\
ee12b079 17:f410d4327247 112 gCS_ADF=1;\
ee12b079 17:f410d4327247 113 wait(2);\
ee12b079 17:f410d4327247 114 Adf_data_counter = 0;\
ee12b079 17:f410d4327247 115 EOS_f=0;\
ee12b079 17:f410d4327247 116 segment_f=1;\
ee12b079 17:f410d4327247 117 // printf("seg=%d\n",no_of_segments);\
ee12b079 17:f410d4327247 118 gCS_ADF=0;\
ee12b079 17:f410d4327247 119 spi.write(CMD_PHY_TX);\
ee12b079 17:f410d4327247 120 gCS_ADF=1;\
ee12b079 17:f410d4327247 121 }
ee12b079 17:f410d4327247 122 int err_arr[64];
ee12b079 17:f410d4327247 123 bool bbram_err=false;
ee12b079 17:f410d4327247 124 int err_idx=-1;
ee12b079 17:f410d4327247 125 int err[64];
ee12b079 17:f410d4327247 126 #define bbram_check gCS_ADF=0;\
ee12b079 17:f410d4327247 127 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 128 err_arr[i]=0;\
ee12b079 17:f410d4327247 129 }\
ee12b079 17:f410d4327247 130 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 131 err[i]=0;\
ee12b079 17:f410d4327247 132 }\
ee12b079 17:f410d4327247 133 bbram_err=false;\
ee12b079 17:f410d4327247 134 gCS_ADF=0;\
ee12b079 17:f410d4327247 135 spi.write(0x39);\
ee12b079 17:f410d4327247 136 spi.write(0x00);\
ee12b079 17:f410d4327247 137 spi.write(0xFF);\
ee12b079 17:f410d4327247 138 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 139 err_arr[i]=spi.write(0xFF);\
ee12b079 17:f410d4327247 140 if(err_arr[i]!=bbram_buffer[i+2]){\
ee12b079 17:f410d4327247 141 err[i]=1;\
ee12b079 17:f410d4327247 142 bbram_err=true;\
ee12b079 17:f410d4327247 143 }\
ee12b079 17:f410d4327247 144 }\
ee12b079 17:f410d4327247 145 gCS_ADF=1;\
ee12b079 17:f410d4327247 146 if(!bbram_err)\
ee12b079 17:f410d4327247 147 gPC.printf("BBRAM verified \r\n");\
ee12b079 17:f410d4327247 148 else\
ee12b079 17:f410d4327247 149 gPC.printf("BBRAM error \r\n");\
ee12b079 17:f410d4327247 150
ee12b079 17:f410d4327247 151
ee12b079 17:f410d4327247 152 bool tx_loop=1;
ee12b079 17:f410d4327247 153 //========================OLD Transmit data=========================================================================================
krishanprajapat 0:578d0f87988f 154 void transmitdata(){ // copy the data to be transmitted to bufer_112
krishanprajapat 0:578d0f87988f 155 for(int i=0;i<112;i++){
krishanprajapat 0:578d0f87988f 156 buffer_112[i]=Adf_data[Adf_data_counter];
krishanprajapat 0:578d0f87988f 157 Adf_data_counter++;
ee12b079 22:eeea8501886c 158
ee12b079 22:eeea8501886c 159 if(data_length==Adf_data_counter)Adf_data_counter = 0;
ee12b079 22:eeea8501886c 160
krishanprajapat 3:bac82a182b28 161 if(data_length==Adf_data_counter){
krishanprajapat 0:578d0f87988f 162 stop_transmission= true;
ee12b079 14:eee578d96cfe 163 Adf_data_counter = 0;
krishanprajapat 0:578d0f87988f 164 break;
krishanprajapat 0:578d0f87988f 165 }
krishanprajapat 0:578d0f87988f 166 }
krishanprajapat 0:578d0f87988f 167 }
krishanprajapat 0:578d0f87988f 168
ee12b079 17:f410d4327247 169
ee12b079 17:f410d4327247 170
ee12b079 17:f410d4327247 171 //======================================================NEW TRANSMIT DATA=======================================
ee12b079 17:f410d4327247 172 /*
ee12b079 17:f410d4327247 173 void transmitdata() // copy the data to be transmitted to bufer_112
ee12b079 17:f410d4327247 174 {
ee12b079 17:f410d4327247 175 tx_loop=true;
ee12b079 17:f410d4327247 176 for(int i=0; ((i<112)&&(tx_loop==1)); i++) {
ee12b079 17:f410d4327247 177 if(segment_f) {
ee12b079 17:f410d4327247 178 buffer_112[i]=Adf_data[Adf_data_counter];
ee12b079 17:f410d4327247 179 Adf_data_counter++;
ee12b079 17:f410d4327247 180
ee12b079 17:f410d4327247 181 if(Adf_data_counter==segment_len) {
ee12b079 17:f410d4327247 182 no_of_segments++;
ee12b079 17:f410d4327247 183 Adf_data_counter=0;
ee12b079 17:f410d4327247 184 if(no_of_segments%12==0) {
ee12b079 17:f410d4327247 185 segment_f=0;
ee12b079 17:f410d4327247 186 EOS_f=1;
ee12b079 17:f410d4327247 187 }
ee12b079 17:f410d4327247 188 }
ee12b079 17:f410d4327247 189 }
ee12b079 17:f410d4327247 190 if(EOS_f) {
ee12b079 17:f410d4327247 191 buffer_112[i]=Adf_data[Adf_data_counter];
ee12b079 17:f410d4327247 192 Adf_data_counter++;
ee12b079 17:f410d4327247 193 if(Adf_data_counter==EOS_len) {
ee12b079 17:f410d4327247 194 segment_f=1;
ee12b079 17:f410d4327247 195 EOS_f=0;
ee12b079 17:f410d4327247 196 Adf_data_counter=0;
ee12b079 17:f410d4327247 197 restart_adf;
ee12b079 17:f410d4327247 198 }
ee12b079 17:f410d4327247 199 }
ee12b079 17:f410d4327247 200
ee12b079 17:f410d4327247 201 }
ee12b079 17:f410d4327247 202 }
ee12b079 17:f410d4327247 203 */
ee12b079 17:f410d4327247 204 #define PRNT_ONCE {\
ee12b079 17:f410d4327247 205 printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\
ee12b079 17:f410d4327247 206 }\
ee12b079 17:f410d4327247 207
krishanprajapat 0:578d0f87988f 208 #define bbram_write {\
krishanprajapat 0:578d0f87988f 209 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 210 spi.write(0xB0);\
krishanprajapat 0:578d0f87988f 211 wait_us(300);\
krishanprajapat 0:578d0f87988f 212 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 213 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 214 for(int i=0;i<66;i++){\
krishanprajapat 0:578d0f87988f 215 spi.write(bbram_buffer[i]);\
krishanprajapat 0:578d0f87988f 216 }\
krishanprajapat 0:578d0f87988f 217 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 218 }
krishanprajapat 0:578d0f87988f 219 //------------------------------------------------------------------------
krishanprajapat 0:578d0f87988f 220 // state checking functions
krishanprajapat 0:578d0f87988f 221 //bool assrt_phy_off( int, int, int);
krishanprajapat 0:578d0f87988f 222 //bool assrt_phy_on( int,int,int);
krishanprajapat 0:578d0f87988f 223 //bool assrt_phy_tx(int,int,int);
krishanprajapat 0:578d0f87988f 224
krishanprajapat 0:578d0f87988f 225 #define check_status {\
krishanprajapat 0:578d0f87988f 226 unsigned char stat=0;\
krishanprajapat 0:578d0f87988f 227 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 228 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 229 stat = spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 230 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 231 status = stat;\
krishanprajapat 0:578d0f87988f 232 }
krishanprajapat 0:578d0f87988f 233
ee12b079 17:f410d4327247 234 /*CMD_VAR*/
ee12b079 17:f410d4327247 235 bool cmd_bit=true;
ee12b079 17:f410d4327247 236 bool cmd_err_flag=false;
ee12b079 17:f410d4327247 237 unsigned char command = 0x00;
ee12b079 17:f410d4327247 238 #define CMD(command) {\
ee12b079 17:f410d4327247 239 cmd_err_cnt=0;\
ee12b079 17:f410d4327247 240 cmd_err_flag=false;\
ee12b079 17:f410d4327247 241 while(cmd_err_cnt<3) {\
krishanprajapat 0:578d0f87988f 242 check_status;\
ee12b079 17:f410d4327247 243 cmd_bit=status&0x20;\
ee12b079 17:f410d4327247 244 if(cmd_bit) {\
ee12b079 17:f410d4327247 245 gCS_ADF=0;\
ee12b079 17:f410d4327247 246 spi.write(command);\
ee12b079 17:f410d4327247 247 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 248 break;\
ee12b079 17:f410d4327247 249 } else {\
ee12b079 17:f410d4327247 250 wait_us(5);\
krishanprajapat 0:578d0f87988f 251 cmd_err_cnt++;\
krishanprajapat 0:578d0f87988f 252 }\
krishanprajapat 0:578d0f87988f 253 }\
ee12b079 17:f410d4327247 254 if(cmd_err_cnt==3) {\
ee12b079 17:f410d4327247 255 cmd_err_flag=true;\
ee12b079 17:f410d4327247 256 }\
ee12b079 17:f410d4327247 257 }\
ee12b079 17:f410d4327247 258 // all three arguments are int\
ee12b079 17:f410d4327247 259 #define assrt_phy_off {\
ee12b079 17:f410d4327247 260 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 261 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 262 if(cmd_err_flag){\
ee12b079 17:f410d4327247 263 temp_return=1;\
ee12b079 17:f410d4327247 264 }\
ee12b079 17:f410d4327247 265 else{\
ee12b079 17:f410d4327247 266 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 267 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 268 check_status;\
ee12b079 17:f410d4327247 269 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 270 temp_return = 0;\
ee12b079 17:f410d4327247 271 break;\
ee12b079 17:f410d4327247 272 }\
ee12b079 17:f410d4327247 273 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 274 temp_return = 1;\
ee12b079 17:f410d4327247 275 break;\
ee12b079 17:f410d4327247 276 }\
ee12b079 17:f410d4327247 277 else {\
ee12b079 17:f410d4327247 278 wait_ms(1);\
ee12b079 17:f410d4327247 279 }\
ee12b079 17:f410d4327247 280 }\
ee12b079 17:f410d4327247 281 }\
ee12b079 17:f410d4327247 282 }\
krishanprajapat 0:578d0f87988f 283
krishanprajapat 0:578d0f87988f 284
ee12b079 17:f410d4327247 285 bool hardware_reset(int bcn_call)
ee12b079 17:f410d4327247 286 {
ee12b079 17:f410d4327247 287 for(int i= 0; i < 2 ; i++) {
krishanprajapat 0:578d0f87988f 288 gCS_ADF=0;
krishanprajapat 0:578d0f87988f 289 spi.write(CMD_HW_RESET);
krishanprajapat 0:578d0f87988f 290 gCS_ADF=1;
krishanprajapat 0:578d0f87988f 291 wait_ms(2);// Typically 1 ms
krishanprajapat 0:578d0f87988f 292 int count=0;
ee12b079 17:f410d4327247 293 temp_return = 0;
ee12b079 17:f410d4327247 294 while(count<10 && miso_err_cnt<10) {
ee12b079 17:f410d4327247 295 if(MISO_PIN) {
ee12b079 17:f410d4327247 296 // assrt_phy_off;
ee12b079 17:f410d4327247 297 /*asseert_phyoff Starts**/
ee12b079 17:f410d4327247 298 {\
ee12b079 17:f410d4327247 299 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 300 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 301 if(cmd_err_flag){\
ee12b079 17:f410d4327247 302 temp_return=1;\
ee12b079 17:f410d4327247 303 }\
ee12b079 17:f410d4327247 304 else{\
ee12b079 17:f410d4327247 305 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 306 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 307 check_status;\
ee12b079 17:f410d4327247 308 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 309 temp_return = 0;\
ee12b079 17:f410d4327247 310 break;\
ee12b079 17:f410d4327247 311 }\
ee12b079 17:f410d4327247 312 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 313 temp_return = 1;\
ee12b079 17:f410d4327247 314 break;\
ee12b079 17:f410d4327247 315 }\
ee12b079 17:f410d4327247 316 else {\
ee12b079 17:f410d4327247 317 wait_ms(1);\
ee12b079 17:f410d4327247 318 }\
ee12b079 17:f410d4327247 319 }\
ee12b079 17:f410d4327247 320 }\
ee12b079 17:f410d4327247 321 }\
ee12b079 17:f410d4327247 322 /*Assert_phy_off_ends*/
ee12b079 17:f410d4327247 323
ee12b079 17:f410d4327247 324
ee12b079 17:f410d4327247 325
ee12b079 17:f410d4327247 326
ee12b079 17:f410d4327247 327
krishanprajapat 0:578d0f87988f 328 if(!temp_return){
krishanprajapat 0:578d0f87988f 329 return 0;
krishanprajapat 0:578d0f87988f 330 }
krishanprajapat 0:578d0f87988f 331 count++;
ee12b079 17:f410d4327247 332 } else {
krishanprajapat 0:578d0f87988f 333 wait_us(50);
krishanprajapat 0:578d0f87988f 334 miso_err_cnt++;
krishanprajapat 0:578d0f87988f 335 }
krishanprajapat 0:578d0f87988f 336 }
krishanprajapat 0:578d0f87988f 337 }
krishanprajapat 0:578d0f87988f 338 return 1;
krishanprajapat 0:578d0f87988f 339 }
ee12b079 17:f410d4327247 340 //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 341 //----------------------------------------------------------------------------
ee12b079 17:f410d4327247 342 /*
krishanprajapat 0:578d0f87988f 343 # define initiate {\
krishanprajapat 0:578d0f87988f 344 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 345 spi.write(0xFF);\
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(0x14);\
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(0x08);\
krishanprajapat 0:578d0f87988f 355 spi.write(0x15);\
krishanprajapat 0:578d0f87988f 356 spi.write(0xFF);\
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(0x24);\
krishanprajapat 0:578d0f87988f 361 spi.write(0x20);\
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(0x37);\
krishanprajapat 0:578d0f87988f 366 spi.write(0xE0);\
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(0x36);\
krishanprajapat 0:578d0f87988f 371 spi.write(0x70);\
krishanprajapat 0:578d0f87988f 372 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 373 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 374 spi.write(0x09);\
krishanprajapat 0:578d0f87988f 375 spi.write(0x39);\
krishanprajapat 0:578d0f87988f 376 spi.write(0x10);\
krishanprajapat 0:578d0f87988f 377 gCS_ADF=1;\
ee12b079 17:f410d4327247 378 }*/
ee12b079 17:f410d4327247 379
ee12b079 17:f410d4327247 380 unsigned char temp;
ee12b079 17:f410d4327247 381 bool reg_err;
ee12b079 17:f410d4327247 382 int reg_err_cnt;
ee12b079 17:f410d4327247 383 #define REG_ERR_THRS 5
ee12b079 17:f410d4327247 384 #define reg_check(addr1,addr2,reg_val)\
ee12b079 17:f410d4327247 385 {\
ee12b079 17:f410d4327247 386 gCS_ADF=0;\
ee12b079 17:f410d4327247 387 reg_err=false;\
ee12b079 17:f410d4327247 388 spi.write(addr1);\
ee12b079 17:f410d4327247 389 spi.write(addr2);\
ee12b079 17:f410d4327247 390 spi.write(0xFF);\
ee12b079 17:f410d4327247 391 temp = spi.write(0xFF);\
ee12b079 17:f410d4327247 392 if(temp==reg_val)\
ee12b079 17:f410d4327247 393 reg_err = false;\
ee12b079 17:f410d4327247 394 else\
ee12b079 17:f410d4327247 395 reg_err=true;\
ee12b079 17:f410d4327247 396 gCS_ADF=1;\
ee12b079 17:f410d4327247 397 }\
ee12b079 17:f410d4327247 398 //========================================================
ee12b079 17:f410d4327247 399 /*# define initiate {\
ee12b079 17:f410d4327247 400 gCS_ADF=0;\
ee12b079 17:f410d4327247 401 spi.write(0xFF);\
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(0x14);\
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(0x08);\
ee12b079 17:f410d4327247 411 spi.write(0x15);\
ee12b079 17:f410d4327247 412 spi.write(0xFF);\
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(0x24);\
ee12b079 17:f410d4327247 417 spi.write(0x20);\
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(0x37);\
ee12b079 17:f410d4327247 422 spi.write(0xE0);\
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(0x36);\
ee12b079 17:f410d4327247 427 spi.write(0x70);\
ee12b079 17:f410d4327247 428 gCS_ADF=1;\
ee12b079 17:f410d4327247 429 gCS_ADF=0;\
ee12b079 17:f410d4327247 430 spi.write(0x09);\
ee12b079 17:f410d4327247 431 spi.write(0x39);\
ee12b079 17:f410d4327247 432 spi.write(0x10);\
ee12b079 17:f410d4327247 433 gCS_ADF=1;\
ee12b079 17:f410d4327247 434 }*/
ee12b079 17:f410d4327247 435
ee12b079 17:f410d4327247 436 //========================================================
krishanprajapat 0:578d0f87988f 437
krishanprajapat 0:578d0f87988f 438
ee12b079 17:f410d4327247 439 #define initiate {\
ee12b079 17:f410d4327247 440 gCS_ADF=0;\
ee12b079 17:f410d4327247 441 spi.write(0xFF);\
ee12b079 17:f410d4327247 442 spi.write(0xFF);\
ee12b079 17:f410d4327247 443 gCS_ADF=1;\
ee12b079 17:f410d4327247 444 reg_err=true;\
ee12b079 17:f410d4327247 445 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 17:f410d4327247 446 gCS_ADF=0;\
ee12b079 17:f410d4327247 447 spi.write(0x08);\
ee12b079 17:f410d4327247 448 spi.write(0x14);\
ee12b079 17:f410d4327247 449 spi.write(TRANSMIT_LEN_1);\
ee12b079 17:f410d4327247 450 gCS_ADF=1;\
ee12b079 17:f410d4327247 451 reg_check(0x28,0x14,TRANSMIT_LEN_1);\
ee12b079 17:f410d4327247 452 }\
ee12b079 17:f410d4327247 453 if(reg_err)\
ee12b079 17:f410d4327247 454 printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 455 else\
ee12b079 17:f410d4327247 456 printf("reg written successful %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 457 reg_err=true;\
ee12b079 17:f410d4327247 458 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 17:f410d4327247 459 gCS_ADF=0;\
ee12b079 17:f410d4327247 460 spi.write(0x08);\
ee12b079 17:f410d4327247 461 spi.write(0x15);\
ee12b079 17:f410d4327247 462 spi.write(TRANSMIT_LEN_2);\
ee12b079 17:f410d4327247 463 gCS_ADF=1;\
ee12b079 17:f410d4327247 464 reg_check(0x28,0x15,TRANSMIT_LEN_2);\
ee12b079 17:f410d4327247 465 }\
ee12b079 17:f410d4327247 466 if(reg_err)\
ee12b079 17:f410d4327247 467 printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 468 else\
ee12b079 17:f410d4327247 469 printf("reg written successful %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 470 }\
ee12b079 17:f410d4327247 471
ee12b079 17:f410d4327247 472 bool rolling_buffer_settings_error=true;
ee12b079 17:f410d4327247 473 bool bbram_write_success=true;
ee12b079 17:f410d4327247 474 int bbram_err_cnt=0;
ee12b079 17:f410d4327247 475 int rbp_err_cnt=0;
ee12b079 17:f410d4327247 476 bool reset_flag=false;
ee12b079 17:f410d4327247 477 #define RBP_THRS 4
ee12b079 17:f410d4327247 478 bool quit_configuration=false;
ee12b079 17:f410d4327247 479 bool power_reset_flag=false;
ee12b079 17:f410d4327247 480 unsigned int power_reset_count=0;
ee12b079 17:f410d4327247 481 bool Configuration_done=false;
ee12b079 17:f410d4327247 482 #define HW_THRS 2
ee12b079 17:f410d4327247 483 //======================================OLD Write Data===================================
ee12b079 17:f410d4327247 484 /*
krishanprajapat 0:578d0f87988f 485 #define write_data {\
krishanprajapat 3:bac82a182b28 486 counter++;\
krishanprajapat 0:578d0f87988f 487 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 488 spi.write(0x0B);\
krishanprajapat 0:578d0f87988f 489 spi.write(0x36);\
krishanprajapat 0:578d0f87988f 490 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 491 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 492 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 493 if(buffer_state){\
krishanprajapat 0:578d0f87988f 494 spi.write(0x18);\
krishanprajapat 0:578d0f87988f 495 spi.write(0x20);\
krishanprajapat 0:578d0f87988f 496 for(unsigned char i=0; i<112;i++){\
krishanprajapat 0:578d0f87988f 497 spi.write(buffer_112[i]);\
krishanprajapat 0:578d0f87988f 498 }\
krishanprajapat 0:578d0f87988f 499 }\
krishanprajapat 0:578d0f87988f 500 else{\
krishanprajapat 0:578d0f87988f 501 spi.write(0x18);\
krishanprajapat 0:578d0f87988f 502 spi.write(0x90);\
krishanprajapat 0:578d0f87988f 503 for(unsigned char i=0; i<112;i++){\
krishanprajapat 0:578d0f87988f 504 spi.write(buffer_112[i]);\
krishanprajapat 0:578d0f87988f 505 }\
krishanprajapat 0:578d0f87988f 506 }\
krishanprajapat 0:578d0f87988f 507 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 508 buffer_state = !buffer_state;\
ee12b079 17:f410d4327247 509 }*/
ee12b079 17:f410d4327247 510 void send_tm_from_SD_card()
ee12b079 17:f410d4327247 511 {
krishanprajapat 0:578d0f87988f 512 }
ee12b079 17:f410d4327247 513 //==========================================================================
ee12b079 17:f410d4327247 514
ee12b079 17:f410d4327247 515 //==================NEW_WRITE_DATA_VARs============================================
ee12b079 17:f410d4327247 516 //unsigned int counter =0;
ee12b079 17:f410d4327247 517 bool data_err= false;
ee12b079 17:f410d4327247 518 unsigned char temp_byte=0x00;
ee12b079 17:f410d4327247 519 unsigned char data_err1[112];
ee12b079 17:f410d4327247 520 unsigned char data_err_cnt=0;
ee12b079 17:f410d4327247 521 unsigned int byte_count =0;
ee12b079 17:f410d4327247 522 #define DATA_ERR_THRS 20
krishanprajapat 0:578d0f87988f 523
ee12b079 17:f410d4327247 524 bool last_buffer = 0;
ee12b079 17:f410d4327247 525 //#define write_data data_err_cnt=0;
ee12b079 17:f410d4327247 526 //==================NEW_WRITE_DATA============================================
ee12b079 17:f410d4327247 527 bool finish_write_data=0;
ee12b079 17:f410d4327247 528 #define write_data {\
ee12b079 17:f410d4327247 529 counter++;\
ee12b079 17:f410d4327247 530 gCS_ADF=0;\
ee12b079 17:f410d4327247 531 spi.write(0x0B);\
ee12b079 17:f410d4327247 532 spi.write(0x36);\
ee12b079 17:f410d4327247 533 spi.write(0xFF);\
ee12b079 17:f410d4327247 534 gCS_ADF=1;\
ee12b079 17:f410d4327247 535 data_err_cnt=0;\
ee12b079 17:f410d4327247 536 data_err=true;\
ee12b079 17:f410d4327247 537 while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
ee12b079 17:f410d4327247 538 gCS_ADF=0;\
ee12b079 17:f410d4327247 539 if(buffer_state){\
ee12b079 17:f410d4327247 540 spi.write(0x18);\
ee12b079 17:f410d4327247 541 spi.write(0x20);\
ee12b079 17:f410d4327247 542 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 543 if(bypass_adf)\
ee12b079 17:f410d4327247 544 gPC.putc(buffer_112[i]);\
ee12b079 17:f410d4327247 545 else\
ee12b079 17:f410d4327247 546 spi.write(buffer_112[i]);\
ee12b079 17:f410d4327247 547 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 17:f410d4327247 548 }\
ee12b079 17:f410d4327247 549 }\
ee12b079 17:f410d4327247 550 else{\
ee12b079 17:f410d4327247 551 spi.write(0x18);\
ee12b079 17:f410d4327247 552 spi.write(0x90);\
ee12b079 17:f410d4327247 553 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 554 if(bypass_adf)\
ee12b079 17:f410d4327247 555 gPC.putc(buffer_112[i]);\
ee12b079 17:f410d4327247 556 else\
ee12b079 17:f410d4327247 557 spi.write(buffer_112[i]);\
ee12b079 17:f410d4327247 558 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 17:f410d4327247 559 }\
ee12b079 17:f410d4327247 560 }\
ee12b079 17:f410d4327247 561 gCS_ADF=1;\
ee12b079 17:f410d4327247 562 wait_us(5);\
ee12b079 17:f410d4327247 563 data_err=false;\
ee12b079 17:f410d4327247 564 gCS_ADF=0;\
ee12b079 17:f410d4327247 565 spi.write(0x38);\
ee12b079 17:f410d4327247 566 if(buffer_state){\
ee12b079 17:f410d4327247 567 spi.write(0x20);\
ee12b079 17:f410d4327247 568 }\
ee12b079 17:f410d4327247 569 else{\
ee12b079 17:f410d4327247 570 spi.write(0x90);\
ee12b079 17:f410d4327247 571 }\
ee12b079 17:f410d4327247 572 spi.write(0xFF);\
ee12b079 17:f410d4327247 573 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 574 temp_byte=spi.write(0xFF);\
ee12b079 17:f410d4327247 575 if(buffer_112[i]!=temp_byte){\
ee12b079 17:f410d4327247 576 data_err1[i]=1;\
ee12b079 17:f410d4327247 577 data_err=true;\
ee12b079 17:f410d4327247 578 }\
ee12b079 17:f410d4327247 579 }\
ee12b079 17:f410d4327247 580 gCS_ADF=1;\
ee12b079 17:f410d4327247 581 /*SPI_mutex.unlock();*/\
ee12b079 17:f410d4327247 582 if(data_err==false){\
ee12b079 17:f410d4327247 583 buffer_state = !buffer_state;\
ee12b079 17:f410d4327247 584 }\
ee12b079 17:f410d4327247 585 data_err_cnt++;\
ee12b079 17:f410d4327247 586 if(last_buffer){\
ee12b079 17:f410d4327247 587 finish_write_data = true;\
ee12b079 17:f410d4327247 588 /*gPC.puts("adf_off\r\n");*/\
ee12b079 17:f410d4327247 589 }\
ee12b079 17:f410d4327247 590 }\
ee12b079 17:f410d4327247 591 }
ee12b079 17:f410d4327247 592 //==============================================================
ee12b079 17:f410d4327247 593
ee12b079 17:f410d4327247 594 /*void check()
ee12b079 17:f410d4327247 595 {
ee12b079 17:f410d4327247 596 check_status; //remove me
ee12b079 17:f410d4327247 597 printf("I 0x%X\r\n",(int)status);//Remove me
ee12b079 17:f410d4327247 598 if(IRQ) {
ee12b079 17:f410d4327247 599 printf("det\r\n");
ee12b079 17:f410d4327247 600 // if(1){
ee12b079 17:f410d4327247 601 if(!ADF_off) {
ee12b079 17:f410d4327247 602 // gCOM_MNG_TMTC_THREAD->signal_set(signal);
ee12b079 17:f410d4327247 603 if(stop_transmission) {
krishanprajapat 0:578d0f87988f 604 write_data;
krishanprajapat 0:578d0f87988f 605 ADF_off=true;
ee12b079 17:f410d4327247 606
ee12b079 17:f410d4327247 607 } else {
krishanprajapat 0:578d0f87988f 608 write_data;
krishanprajapat 0:578d0f87988f 609 transmitdata();
krishanprajapat 0:578d0f87988f 610 }
ee12b079 17:f410d4327247 611 } else {
krishanprajapat 3:bac82a182b28 612 wait_ms(20);
ee12b079 17:f410d4327247 613 // ticker.detach();
krishanprajapat 0:578d0f87988f 614 gCS_ADF=0;
krishanprajapat 0:578d0f87988f 615 spi.write(0xB1);
krishanprajapat 0:578d0f87988f 616 gCS_ADF=1;
krishanprajapat 0:578d0f87988f 617 gPC.puts("transmission done\r\n");
ee12b079 17:f410d4327247 618 // cout<<counter<<endl;
ee12b079 17:f410d4327247 619 loop_on=false;
ee12b079 17:f410d4327247 620 }
krishanprajapat 0:578d0f87988f 621 }
ee12b079 17:f410d4327247 622 }*/
ee12b079 17:f410d4327247 623 //=============NEW CHECK VAriables===================================================================
ee12b079 17:f410d4327247 624 bool data_irq_err=0;
ee12b079 17:f410d4327247 625
ee12b079 17:f410d4327247 626 //================================================================================
ee12b079 17:f410d4327247 627 void check()
ee12b079 17:f410d4327247 628 {
ee12b079 17:f410d4327247 629 check_status; //remove me
ee12b079 17:f410d4327247 630 printf("I 0x%X\r\n",(int)status);//Remove me
ee12b079 17:f410d4327247 631 if(IRQ) {
ee12b079 17:f410d4327247 632 printf("det\r\n");
ee12b079 17:f410d4327247 633 // if(1){
ee12b079 17:f410d4327247 634 if(!ADF_off) {
ee12b079 17:f410d4327247 635 // gCOM_MNG_TMTC_THREAD->signal_set(signal);
ee12b079 17:f410d4327247 636 if(stop_transmission) {
ee12b079 17:f410d4327247 637 write_data;
ee12b079 17:f410d4327247 638 ADF_off=true;
ee12b079 17:f410d4327247 639
ee12b079 17:f410d4327247 640 } else {
ee12b079 17:f410d4327247 641 write_data;
ee12b079 17:f410d4327247 642 transmitdata();
ee12b079 17:f410d4327247 643 }
ee12b079 17:f410d4327247 644 } else {
ee12b079 17:f410d4327247 645 wait_ms(20);
ee12b079 17:f410d4327247 646 // ticker.detach();
ee12b079 17:f410d4327247 647 gCS_ADF=0;
ee12b079 17:f410d4327247 648 spi.write(0xB1);
ee12b079 17:f410d4327247 649 gCS_ADF=1;
ee12b079 17:f410d4327247 650 gPC.puts("transmission done\r\n");
ee12b079 17:f410d4327247 651 // cout<<counter<<endl;
ee12b079 17:f410d4327247 652 loop_on=false;
ee12b079 17:f410d4327247 653 }
ee12b079 17:f410d4327247 654 }
ee12b079 17:f410d4327247 655 else{
ee12b079 17:f410d4327247 656 if(T.read_us()>98000){\
ee12b079 17:f410d4327247 657 data_irq_err=true;\
ee12b079 17:f410d4327247 658 CMD(CMD_PHY_ON);
ee12b079 17:f410d4327247 659 gPC.printf("Data_error_detected");
ee12b079 17:f410d4327247 660 }\
ee12b079 17:f410d4327247 661 }\
krishanprajapat 0:578d0f87988f 662 }
krishanprajapat 0:578d0f87988f 663
ee12b079 17:f410d4327247 664
ee12b079 17:f410d4327247 665
ee12b079 17:f410d4327247 666 //=================================================================================
ee12b079 17:f410d4327247 667
ee12b079 17:f410d4327247 668
ee12b079 17:f410d4327247 669
ee12b079 17:f410d4327247 670 //bool bypass_adf = false;
ee12b079 17:f410d4327247 671 //================================================================================
ee12b079 17:f410d4327247 672 //void check(){
ee12b079 17:f410d4327247 673 //if(IRQ || bypass_adf){\
ee12b079 17:f410d4327247 674 // if(finish_write_data){\
ee12b079 17:f410d4327247 675 // if(ADF_off){\
ee12b079 17:f410d4327247 676 // SPI_mutex.lock();\
ee12b079 17:f410d4327247 677 // gCS_ADF=0;\
ee12b079 17:f410d4327247 678 // spi.write(0xB1);\
ee12b079 17:f410d4327247 679 // data_tx_success=true;\
ee12b079 17:f410d4327247 680 // gCS_ADF=1;\
ee12b079 17:f410d4327247 681 // SPI_mutex.unlock();\
ee12b079 17:f410d4327247 682 // loop_on = false;\
ee12b079 17:f410d4327247 683 // gPC.puts("Transmission done\r\n");\
ee12b079 17:f410d4327247 684 // gLEDR = 1;\
ee12b079 17:f410d4327247 685 // }\
ee12b079 17:f410d4327247 686 // else{\
ee12b079 17:f410d4327247 687 // ADF_off = true;\
ee12b079 17:f410d4327247 688 // }\
ee12b079 17:f410d4327247 689 // }else{\
ee12b079 17:f410d4327247 690 // gLEDR = !gLEDR;\
ee12b079 17:f410d4327247 691 // write_data;\
ee12b079 17:f410d4327247 692 // if(sent_tmfrom_SDcard)\
ee12b079 17:f410d4327247 693 // send_tm_from_SD_card_fun();\
ee12b079 17:f410d4327247 694 // else snd_tm.transmit_data(buffer_112,&last_buffer);\
ee12b079 17:f410d4327247 695 // }\
ee12b079 17:f410d4327247 696 // T.reset();\
ee12b079 17:f410d4327247 697 // }\
ee12b079 17:f410d4327247 698 // else{\
ee12b079 17:f410d4327247 699 // if(T.read_us()>98000){\
ee12b079 17:f410d4327247 700 // data_irq_err=true;\
ee12b079 17:f410d4327247 701 // CMD(CMD_PHY_ON);\
ee12b079 17:f410d4327247 702 // break;\
ee12b079 17:f410d4327247 703 // }\
ee12b079 17:f410d4327247 704 // }\
ee12b079 17:f410d4327247 705 // }
ee12b079 17:f410d4327247 706 //================================================================================/=
krishanprajapat 0:578d0f87988f 707 //
krishanprajapat 0:578d0f87988f 708 //#define send_data {\
krishanprajapat 0:578d0f87988f 709 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 710 // spi.write(0xBB);\
krishanprajapat 0:578d0f87988f 711 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 712 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 713 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 714 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 715 // gCS_ADF=1;\
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 // write_data;\
krishanprajapat 0:578d0f87988f 728 // if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 729 // send_tm_from_SD_card();\
krishanprajapat 0:578d0f87988f 730 // }else{\
krishanprajapat 0:578d0f87988f 731 // transmitdata();\
krishanprajapat 0:578d0f87988f 732 // }\
krishanprajapat 0:578d0f87988f 733 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 734 // spi.write(0xB1);\
krishanprajapat 0:578d0f87988f 735 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 736 // wait_us(300);\
krishanprajapat 0:578d0f87988f 737 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 738 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 739 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 740 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 741 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 742 // spi.write(0xB5);\
krishanprajapat 0:578d0f87988f 743 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 744 // wait_us(300);\
krishanprajapat 0:578d0f87988f 745 // gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 746 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 747 // spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 748 // gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 749 // ticker.attach_us(&check,32000);\
krishanprajapat 0:578d0f87988f 750 //}
krishanprajapat 0:578d0f87988f 751
krishanprajapat 0:578d0f87988f 752 #define send_data {\
krishanprajapat 0:578d0f87988f 753 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 754 spi.write(0xBB);\
krishanprajapat 0:578d0f87988f 755 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 756 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 757 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 758 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 759 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 760 if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 761 }\
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 write_data;\
krishanprajapat 0:578d0f87988f 771 if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 772 }else{\
krishanprajapat 0:578d0f87988f 773 transmitdata();\
krishanprajapat 0:578d0f87988f 774 }\
krishanprajapat 0:578d0f87988f 775 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 776 spi.write(0xB1);\
krishanprajapat 0:578d0f87988f 777 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 778 wait_us(300);\
krishanprajapat 0:578d0f87988f 779 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 780 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 781 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 782 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 783 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 784 spi.write(0xB5);\
krishanprajapat 0:578d0f87988f 785 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 786 wait_us(300);\
krishanprajapat 0:578d0f87988f 787 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 788 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 789 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 790 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 791 }
ee12b079 17:f410d4327247 792 #define initial_adf_check {\
ee12b079 17:f410d4327247 793 bool Configuration_Done=false;\
ee12b079 17:f410d4327247 794 quit_configuration=false;\
ee12b079 17:f410d4327247 795 bool reset_flag1 = 0;\
ee12b079 17:f410d4327247 796 bool flag = false;\
ee12b079 17:f410d4327247 797 while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 798 while((bbram_err_cnt<2)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 799 /*assrt_phy_off;*/\
ee12b079 17:f410d4327247 800 /*Assrt_phy_off Begin*/\
ee12b079 17:f410d4327247 801 {\
ee12b079 17:f410d4327247 802 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 803 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 804 if(cmd_err_flag){\
ee12b079 17:f410d4327247 805 temp_return=1;\
ee12b079 17:f410d4327247 806 }\
ee12b079 17:f410d4327247 807 else{\
ee12b079 17:f410d4327247 808 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 809 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 810 check_status;\
ee12b079 17:f410d4327247 811 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 812 temp_return = 0;\
ee12b079 17:f410d4327247 813 break;\
ee12b079 17:f410d4327247 814 }\
ee12b079 17:f410d4327247 815 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 816 temp_return = 1;\
ee12b079 17:f410d4327247 817 break;\
ee12b079 17:f410d4327247 818 }\
ee12b079 17:f410d4327247 819 else {\
ee12b079 17:f410d4327247 820 wait_ms(1);\
ee12b079 17:f410d4327247 821 }\
ee12b079 17:f410d4327247 822 }\
ee12b079 17:f410d4327247 823 }\
ee12b079 17:f410d4327247 824 }\
ee12b079 17:f410d4327247 825 /*Assrt_phy_off end*/\
ee12b079 17:f410d4327247 826 reset_flag1=temp_return;\
ee12b079 17:f410d4327247 827 if(!reset_flag1){\
ee12b079 17:f410d4327247 828 bbram_write;\
ee12b079 17:f410d4327247 829 while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 830 bbram_check;\
ee12b079 17:f410d4327247 831 if(bbram_err==0){\
ee12b079 17:f410d4327247 832 bbram_write_success=true;\
ee12b079 17:f410d4327247 833 bbram_err_cnt=0;\
ee12b079 17:f410d4327247 834 initiate;\
ee12b079 17:f410d4327247 835 if(reg_err){\
ee12b079 17:f410d4327247 836 rbp_err_cnt++;\
ee12b079 17:f410d4327247 837 }\
ee12b079 17:f410d4327247 838 else{\
ee12b079 17:f410d4327247 839 rbp_err_cnt=0;\
ee12b079 17:f410d4327247 840 gPC.printf("NO Reg err\r\n");\
ee12b079 17:f410d4327247 841 CMD(CMD_CONFIG_DEV);\
ee12b079 17:f410d4327247 842 if(cmd_err_flag){\
ee12b079 17:f410d4327247 843 reset_flag=1;\
ee12b079 17:f410d4327247 844 gPC.printf("CMD ERR\r\n");\
ee12b079 17:f410d4327247 845 }\
ee12b079 17:f410d4327247 846 else{\
ee12b079 17:f410d4327247 847 reset_flag=0;\
ee12b079 17:f410d4327247 848 gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\
ee12b079 17:f410d4327247 849 quit_configuration=true;\
ee12b079 17:f410d4327247 850 }\
ee12b079 17:f410d4327247 851 }\
ee12b079 17:f410d4327247 852 }\
ee12b079 17:f410d4327247 853 else{\
ee12b079 17:f410d4327247 854 bbram_write_success=false;\
ee12b079 17:f410d4327247 855 bbram_err_cnt++;\
ee12b079 17:f410d4327247 856 break;\
ee12b079 17:f410d4327247 857 }\
ee12b079 17:f410d4327247 858 }\
ee12b079 17:f410d4327247 859 }\
ee12b079 17:f410d4327247 860 else{\
ee12b079 17:f410d4327247 861 break;\
ee12b079 17:f410d4327247 862 }\
ee12b079 17:f410d4327247 863 }\
ee12b079 17:f410d4327247 864 if(reset_flag1){\
ee12b079 17:f410d4327247 865 hardware_reset(0);\
ee12b079 17:f410d4327247 866 hw_reset_err_cnt++;\
ee12b079 17:f410d4327247 867 gPC.puts("Resetting hardware\r\n");\
ee12b079 17:f410d4327247 868 }\
ee12b079 17:f410d4327247 869 }\
ee12b079 17:f410d4327247 870 if(hw_reset_err_cnt==HW_THRS){\
ee12b079 17:f410d4327247 871 power_reset_flag=1;\
ee12b079 17:f410d4327247 872 power_reset_count++;\
ee12b079 17:f410d4327247 873 }\
ee12b079 17:f410d4327247 874 else{\
ee12b079 17:f410d4327247 875 Configuration_Done=true;\
ee12b079 17:f410d4327247 876 gPC.printf("Configuration_Done\n");\
ee12b079 17:f410d4327247 877 }\
ee12b079 17:f410d4327247 878 }
krishanprajapat 0:578d0f87988f 879
ee12b079 17:f410d4327247 880 void adf_not_SDcard()
ee12b079 17:f410d4327247 881 {
krishanprajapat 0:578d0f87988f 882 buffer_state = true;
ee12b079 17:f410d4327247 883 // last_buffer = false;
krishanprajapat 0:578d0f87988f 884 loop_on = true;
krishanprajapat 0:578d0f87988f 885 ADF_off = false;
krishanprajapat 0:578d0f87988f 886 sent_tmfrom_SDcard = false;
ee12b079 17:f410d4327247 887
ee12b079 17:f410d4327247 888 // signal = COM_MNG_TMTC_SIGNAL_ADF_NSD;
krishanprajapat 0:578d0f87988f 889 initial_adf_check;
ee12b079 17:f410d4327247 890 // gPC.puts("initial adf check\r\n");
ee12b079 17:f410d4327247 891 // initiate;
ee12b079 17:f410d4327247 892 gPC.puts("Config_part done\r\n");
krishanprajapat 0:578d0f87988f 893 send_data;
ee12b079 17:f410d4327247 894 // gPC.puts("Inside adf transmission\r\n");
krishanprajapat 0:578d0f87988f 895 // ADF_non_responsive_timeout.attach(&ADF_non_responsive_fun, 10);
krishanprajapat 0:578d0f87988f 896
krishanprajapat 0:578d0f87988f 897 }
krishanprajapat 0:578d0f87988f 898 int main()
krishanprajapat 0:578d0f87988f 899 {
ee12b079 22:eeea8501886c 900 RF_SW_CNTRL_TX = 1;
ee12b079 22:eeea8501886c 901 wait_ms(25);
ee12b079 22:eeea8501886c 902 RF_SW_CNTRL_TX = 0;
ee12b079 22:eeea8501886c 903
ee12b079 20:2cfca61aafcb 904 COM_OC_SW = 1;
ee12b079 17:f410d4327247 905 while(1) {
ee12b079 14:eee578d96cfe 906 reset_flags;
ee12b079 17:f410d4327247 907 gPC.puts("welcome to adf test\n");
ee12b079 17:f410d4327247 908 spi.format(8,0);
ee12b079 17:f410d4327247 909 spi.frequency(1000000);
ee12b079 17:f410d4327247 910 data_length = sizeof(Adf_data);
ee12b079 17:f410d4327247 911 // cout<<data_length<<endl;
ee12b079 17:f410d4327247 912 adf_not_SDcard();
ee12b079 21:bae83ef7ac5f 913 //PA MCR level
ee12b079 22:eeea8501886c 914 //gCS_ADF=0;
ee12b079 22:eeea8501886c 915 //spi.write(0x1B);//1B0735
ee12b079 22:eeea8501886c 916 //spi.write(0x07);
ee12b079 22:eeea8501886c 917 //spi.write(0x3B);//low power = 0x20, high power = 0x3B;
ee12b079 22:eeea8501886c 918 //gCS_ADF=1;
ee12b079 17:f410d4327247 919 CMD(CMD_PHY_TX);
ee12b079 17:f410d4327247 920 wait_us(2000);
ee12b079 17:f410d4327247 921 while(loop_on){
ee12b079 17:f410d4327247 922 led = !led; // toggle led
ee12b079 17:f410d4327247 923 wait_us(20);
ee12b079 17:f410d4327247 924 check();
ee12b079 17:f410d4327247 925 if(data_irq_err){
ee12b079 17:f410d4327247 926 break;\
ee12b079 17:f410d4327247 927 }
ee12b079 17:f410d4327247 928 }
ee12b079 20:2cfca61aafcb 929 wait(0.5);
ee12b079 17:f410d4327247 930 gPC.printf("in WHILE\n");
ee12b079 17:f410d4327247 931 // wait(1);
ee12b079 17:f410d4327247 932 }
krishanprajapat 1:0b0579f5bbef 933 }