ADF code

Dependencies:   mbed-rtos mbed

Fork of ADF_test by shubham c

Committer:
ee12b079
Date:
Fri Apr 01 18:35:28 2016 +0000
Revision:
9:80284ab81e74
Parent:
7:74e41527807e
Child:
10:afd9e33d3099
Command Instruction ; 0-8 : Manual; 0-Check Status; 1- CMD_HW_RESET; 2-CMD_PHY_OFF ; 3-BBRAM Write; 4-BBRAM Check Registers; 5-Initiate Rlling buffer; 6-Configure device; 7-CMD_PHY_ON; 8-CMD_PHY_TX; 9-Check_ADF (automatic); 10-adf_not_SDcard(transmit releven)

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 9:80284ab81e74 3 //Last modified 18 March 2016 5:34PM : Changes made :-BBRAM_CHECK , REG_CHECK, Verification of connection, Verificatioin of interrupt
ee12b079 9:80284ab81e74 4 //Last modified 30 March 2016 5:34PM : Changes made :-Infinite verification of BBRAM_CHECK , REG_CHECK, Verification of connection, Verificatioin of interrupt
ee12b079 9:80284ab81e74 5 //Last modified 31 March 2016 5:34PM : Changes made :-User Interface of commands and Status verification.
ee12b079 9:80284ab81e74 6 //Last modified 01 April 2016 5:34PM : Changes made :-Correction in register verification, inclusion of dual setup. Manual as well as automatic, Data registers verification, Automatic Tx_RX Turnaround to be put off(in BBRAM),
ee12b079 9:80284ab81e74 7 //Changes to be made: Delete Initial ADF Check. and create other function to verify ADF
krishanprajapat 0:578d0f87988f 8 //without reset feature , with state checks.
krishanprajapat 0:578d0f87988f 9 #include<iostream>
ee12b079 9:80284ab81e74 10 #include"others.h"
ee12b079 9:80284ab81e74 11 #include<stdio.h>
krishanprajapat 0:578d0f87988f 12 #include"mbed.h"
ee12b079 9:80284ab81e74 13 #define START_ADDRESS 0x020;
ee12b079 9:80284ab81e74 14 #define MISO_PIN PTE3
ee12b079 9:80284ab81e74 15 /**************Defining Counter Limits**************/
ee12b079 9:80284ab81e74 16 #define THRS 20
ee12b079 9:80284ab81e74 17 #define STATE_ERR_THRS 20
ee12b079 9:80284ab81e74 18 #define PHY_OFF_EXEC_TIME 300
ee12b079 9:80284ab81e74 19 #define PHY_ON_EXEC_TIME 300
ee12b079 9:80284ab81e74 20 #define PHY_TX_EXEC_TIME 600
ee12b079 9:80284ab81e74 21 #define REG_ERR_THRS 20
ee12b079 9:80284ab81e74 22 #define TRANSMIT_LEN_1 0xFF
ee12b079 9:80284ab81e74 23 #define TRANSMIT_LEN_2 0xFF
ee12b079 9:80284ab81e74 24 /******DEFINING COMMANDS*********/
ee12b079 9:80284ab81e74 25 #define CMD_HW_RESET 0xC8
ee12b079 9:80284ab81e74 26 #define CMD_PHY_ON 0xB1
ee12b079 9:80284ab81e74 27 #define CMD_PHY_OFF 0xB0
ee12b079 9:80284ab81e74 28 #define CMD_PHY_TX 0xB5
ee12b079 9:80284ab81e74 29 #define CMD_CONFIG_DEV 0xBB
ee12b079 9:80284ab81e74 30 /*******Defining Status***************************/
ee12b079 9:80284ab81e74 31 #define PHY_OFF 0xB1
ee12b079 9:80284ab81e74 32 #define PHY_ON 0xB2
ee12b079 9:80284ab81e74 33 #define PHY_TX 0xB4
ee12b079 9:80284ab81e74 34 #define PHY_SLEEP 0xA6
ee12b079 9:80284ab81e74 35 #define S_PHY_OFF 0x11
ee12b079 9:80284ab81e74 36 #define S_PHY_ON 0x12
ee12b079 9:80284ab81e74 37 #define S_PHY_TX 0x14
ee12b079 9:80284ab81e74 38 #define S_PHY_SLEEP 0x06
ee12b079 9:80284ab81e74 39 /******PINS*********/
krishanprajapat 0:578d0f87988f 40 #define ADF_IRQ PTA14
krishanprajapat 0:578d0f87988f 41 #define SPI_MOSI PTE1
krishanprajapat 0:578d0f87988f 42 #define SPI_MISO PTE3
krishanprajapat 0:578d0f87988f 43 #define SPI_CLK PTE2
krishanprajapat 0:578d0f87988f 44 #define SPI_CS_ADF PTA15
ee12b079 9:80284ab81e74 45
ee12b079 9:80284ab81e74 46 /**********Variables-**********/
ee12b079 9:80284ab81e74 47 unsigned int Adf_data_counter=0;
ee12b079 9:80284ab81e74 48 unsigned char status =0;
ee12b079 9:80284ab81e74 49 unsigned int cmd_err_cnt=0;
ee12b079 9:80284ab81e74 50 unsigned int data_length;
ee12b079 9:80284ab81e74 51 unsigned int state_err_cnt=0;
ee12b079 9:80284ab81e74 52 unsigned int miso_err_cnt=0;
ee12b079 9:80284ab81e74 53 unsigned int hw_reset_err_cnt=0;
ee12b079 9:80284ab81e74 54 unsigned int counter =0;
ee12b079 9:80284ab81e74 55 int err[64];
ee12b079 9:80284ab81e74 56 bool bcn_flag=0;
ee12b079 9:80284ab81e74 57 bool bbram_flag=0;
ee12b079 9:80284ab81e74 58
ee12b079 9:80284ab81e74 59 bool stop_transmission=false;
ee12b079 9:80284ab81e74 60 bool sent_tmfrom_SDcard;
ee12b079 9:80284ab81e74 61 bool loop_on;
ee12b079 9:80284ab81e74 62 bool ADF_off;
ee12b079 9:80284ab81e74 63 bool buffer_state;
ee12b079 9:80284ab81e74 64 bool reg_err=true;
ee12b079 9:80284ab81e74 65 int reg_err_cnt=0;
ee12b079 9:80284ab81e74 66 unsigned char temp = 0x00;
ee12b079 9:80284ab81e74 67
ee12b079 9:80284ab81e74 68 /***Debug Part**********************/
ee12b079 9:80284ab81e74 69 Ticker v;
ee12b079 9:80284ab81e74 70 /*********************/
ee12b079 9:80284ab81e74 71
krishanprajapat 0:578d0f87988f 72 Timer t;
krishanprajapat 0:578d0f87988f 73 Serial gPC( USBTX, USBRX );
krishanprajapat 0:578d0f87988f 74 //gPC.baud(1200);
krishanprajapat 0:578d0f87988f 75 InterruptIn IRQ(ADF_IRQ);
krishanprajapat 0:578d0f87988f 76 Ticker ticker;
krishanprajapat 0:578d0f87988f 77 SPI spi(PTE1, PTE3, PTE2);
krishanprajapat 0:578d0f87988f 78 DigitalOut gCS_ADF(SPI_CS_ADF);
krishanprajapat 0:578d0f87988f 79 DigitalOut led(LED_RED);
krishanprajapat 0:578d0f87988f 80 uint8_t signal = 0x00;
ee12b079 9:80284ab81e74 81 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 7:74e41527807e 82 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};
krishanprajapat 0:578d0f87988f 83 unsigned char buffer_112[112];
ee12b079 9:80284ab81e74 84 bool bbram_err=false;
ee12b079 9:80284ab81e74 85 int err_idx=-1;
krishanprajapat 0:578d0f87988f 86
krishanprajapat 0:578d0f87988f 87 void transmitdata(){ // copy the data to be transmitted to bufer_112
krishanprajapat 0:578d0f87988f 88 for(int i=0;i<112;i++){
krishanprajapat 0:578d0f87988f 89 buffer_112[i]=Adf_data[Adf_data_counter];
krishanprajapat 0:578d0f87988f 90 Adf_data_counter++;
krishanprajapat 3:bac82a182b28 91 if(data_length==Adf_data_counter){
krishanprajapat 0:578d0f87988f 92 stop_transmission= true;
krishanprajapat 0:578d0f87988f 93 break;
krishanprajapat 0:578d0f87988f 94 }
krishanprajapat 0:578d0f87988f 95 }
krishanprajapat 0:578d0f87988f 96 }
krishanprajapat 0:578d0f87988f 97
krishanprajapat 0:578d0f87988f 98 #define bbram_write {\
krishanprajapat 0:578d0f87988f 99 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 100 spi.write(0xB0);\
krishanprajapat 0:578d0f87988f 101 wait_us(300);\
krishanprajapat 0:578d0f87988f 102 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 103 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 104 for(int i=0;i<66;i++){\
krishanprajapat 0:578d0f87988f 105 spi.write(bbram_buffer[i]);\
krishanprajapat 0:578d0f87988f 106 }\
krishanprajapat 0:578d0f87988f 107 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 108 }
krishanprajapat 0:578d0f87988f 109
krishanprajapat 0:578d0f87988f 110 #define check_status {\
krishanprajapat 0:578d0f87988f 111 unsigned char stat=0;\
krishanprajapat 0:578d0f87988f 112 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 113 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 114 stat = spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 115 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 116 status = stat;\
ee12b079 9:80284ab81e74 117 gPC.printf("State= %x \r\n",(int)stat);\
krishanprajapat 0:578d0f87988f 118 }
ee12b079 9:80284ab81e74 119 int err_arr[64];
ee12b079 9:80284ab81e74 120 #define bbram_check gCS_ADF=0;\
ee12b079 9:80284ab81e74 121 for(int i=0;i<64;i++){\
ee12b079 9:80284ab81e74 122 err_arr[i]=0;\
ee12b079 9:80284ab81e74 123 }\
ee12b079 9:80284ab81e74 124 for(int i=0;i<64;i++){\
ee12b079 9:80284ab81e74 125 err[i]=0;\
ee12b079 9:80284ab81e74 126 }\
ee12b079 9:80284ab81e74 127 bbram_err=false;\
ee12b079 9:80284ab81e74 128 gCS_ADF=0;\
ee12b079 9:80284ab81e74 129 spi.write(0x39);\
ee12b079 9:80284ab81e74 130 spi.write(0x00);\
ee12b079 9:80284ab81e74 131 spi.write(0xFF);\
ee12b079 9:80284ab81e74 132 for(int i=0;i<64;i++){\
ee12b079 9:80284ab81e74 133 err_arr[i]=spi.write(0xFF);\
ee12b079 9:80284ab81e74 134 if(err_arr[i]!=bbram_buffer[i+2]){\
ee12b079 9:80284ab81e74 135 err[i]=1;\
ee12b079 9:80284ab81e74 136 bbram_err=true;\
ee12b079 9:80284ab81e74 137 }\
ee12b079 9:80284ab81e74 138 }\
ee12b079 9:80284ab81e74 139 gCS_ADF=1;\
ee12b079 9:80284ab81e74 140 for(int i=0;i<64;i++){\
ee12b079 9:80284ab81e74 141 gPC.printf("%d ",err[i]);\
ee12b079 9:80284ab81e74 142 }\
ee12b079 9:80284ab81e74 143 gPC.printf("Write \t read \r\n");\
ee12b079 9:80284ab81e74 144 for(int i=0;i<64;i++){\
ee12b079 9:80284ab81e74 145 gPC.printf("%x \t %x \r\n",bbram_buffer[i+2],err_arr[i]);\
ee12b079 9:80284ab81e74 146 }\
ee12b079 9:80284ab81e74 147 if(!bbram_err)\
ee12b079 9:80284ab81e74 148 gPC.printf("BBRAM verified \r\n");\
ee12b079 9:80284ab81e74 149
ee12b079 9:80284ab81e74 150 #define reg_check(addr1,addr2,reg_val)\
ee12b079 9:80284ab81e74 151 {\
ee12b079 9:80284ab81e74 152 gCS_ADF=0;\
ee12b079 9:80284ab81e74 153 reg_err=false;\
ee12b079 9:80284ab81e74 154 spi.write(addr1);\
ee12b079 9:80284ab81e74 155 spi.write(addr2);\
ee12b079 9:80284ab81e74 156 spi.write(0xFF);\
ee12b079 9:80284ab81e74 157 temp = spi.write(0xFF);\
ee12b079 9:80284ab81e74 158 if(temp==reg_val)\
ee12b079 9:80284ab81e74 159 reg_err = false;\
ee12b079 9:80284ab81e74 160 else\
ee12b079 9:80284ab81e74 161 reg_err=true;\
ee12b079 9:80284ab81e74 162 gCS_ADF=1;\
ee12b079 9:80284ab81e74 163 }\
ee12b079 9:80284ab81e74 164
ee12b079 9:80284ab81e74 165 #define initiate\
ee12b079 9:80284ab81e74 166 {\
ee12b079 9:80284ab81e74 167 gCS_ADF=0;\
ee12b079 9:80284ab81e74 168 spi.write(0xFF);\
ee12b079 9:80284ab81e74 169 spi.write(0xFF);\
ee12b079 9:80284ab81e74 170 gCS_ADF=1;\
ee12b079 9:80284ab81e74 171 reg_err=true;\
ee12b079 9:80284ab81e74 172 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 9:80284ab81e74 173 gCS_ADF=0;\
ee12b079 9:80284ab81e74 174 spi.write(0x08);\
ee12b079 9:80284ab81e74 175 spi.write(0x14);\
ee12b079 9:80284ab81e74 176 spi.write(TRANSMIT_LEN_1);\
ee12b079 9:80284ab81e74 177 gCS_ADF=1;\
ee12b079 9:80284ab81e74 178 reg_check(0x28,0x14,TRANSMIT_LEN_1);\
ee12b079 9:80284ab81e74 179 }\
ee12b079 9:80284ab81e74 180 if(reg_err)\
ee12b079 9:80284ab81e74 181 printf("Reg_err_ignored %d \r\n",(int)temp);\
ee12b079 9:80284ab81e74 182 else\
ee12b079 9:80284ab81e74 183 printf("reg written successful %d \r\n",(int)temp);\
ee12b079 9:80284ab81e74 184 reg_err=true;\
ee12b079 9:80284ab81e74 185 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 9:80284ab81e74 186 gCS_ADF=0;\
ee12b079 9:80284ab81e74 187 spi.write(0x08);\
ee12b079 9:80284ab81e74 188 spi.write(0x15);\
ee12b079 9:80284ab81e74 189 spi.write(TRANSMIT_LEN_2);\
ee12b079 9:80284ab81e74 190 gCS_ADF=1;\
ee12b079 9:80284ab81e74 191 reg_check(0x28,0x15,TRANSMIT_LEN_2);\
ee12b079 9:80284ab81e74 192 }\
ee12b079 9:80284ab81e74 193 if(reg_err)\
ee12b079 9:80284ab81e74 194 printf("Reg_err_ignored %d \r\n",(int)temp);\
ee12b079 9:80284ab81e74 195 else\
ee12b079 9:80284ab81e74 196 printf("reg written successful %d \r\n",(int)temp);\
ee12b079 9:80284ab81e74 197 reg_err=true;\
ee12b079 9:80284ab81e74 198
ee12b079 9:80284ab81e74 199 }\
krishanprajapat 0:578d0f87988f 200
ee12b079 9:80284ab81e74 201 int v_cnt=0;
ee12b079 9:80284ab81e74 202 bool temp_state_err=false;
ee12b079 9:80284ab81e74 203 bool temp_spi_err=false;
ee12b079 9:80284ab81e74 204 void check_SPI() {
ee12b079 9:80284ab81e74 205 temp_spi_err=false;
ee12b079 9:80284ab81e74 206 temp_state_err=true;
ee12b079 9:80284ab81e74 207 while(temp_state_err){
ee12b079 9:80284ab81e74 208 v_cnt++;
ee12b079 9:80284ab81e74 209 gPC.printf("\r\n\nWelcome to ADF_SPI_Verification %d\r\n",v_cnt);
ee12b079 9:80284ab81e74 210 gCS_ADF=0;
ee12b079 9:80284ab81e74 211 spi.write(CMD_HW_RESET);
ee12b079 9:80284ab81e74 212 gCS_ADF=1;
ee12b079 9:80284ab81e74 213 wait(1);
ee12b079 9:80284ab81e74 214 gCS_ADF=0;
ee12b079 9:80284ab81e74 215 spi.write(CMD_PHY_OFF);
ee12b079 9:80284ab81e74 216 gCS_ADF=1;
ee12b079 9:80284ab81e74 217 wait(1);
ee12b079 9:80284ab81e74 218 check_status;
ee12b079 9:80284ab81e74 219 if((status&0x1F)!=S_PHY_OFF){
ee12b079 9:80284ab81e74 220 gPC.printf("HW_reset_failed.SPI Communication failed. State transited to %x \r\n",(int)status);
ee12b079 9:80284ab81e74 221 temp_spi_err=true;
ee12b079 9:80284ab81e74 222 }
ee12b079 9:80284ab81e74 223 else{
ee12b079 9:80284ab81e74 224 gPC.printf("HW_reset successfull\r\n");
ee12b079 9:80284ab81e74 225 temp_state_err=false;
ee12b079 9:80284ab81e74 226 bbram_write;
ee12b079 9:80284ab81e74 227 bbram_check;
ee12b079 9:80284ab81e74 228 initiate;
ee12b079 9:80284ab81e74 229 gCS_ADF=0;
ee12b079 9:80284ab81e74 230 spi.write(CMD_CONFIG_DEV);
ee12b079 9:80284ab81e74 231 gCS_ADF=1;
ee12b079 9:80284ab81e74 232 wait(1);
ee12b079 9:80284ab81e74 233 }
ee12b079 9:80284ab81e74 234 }
ee12b079 9:80284ab81e74 235 gCS_ADF=0;
ee12b079 9:80284ab81e74 236 spi.write(CMD_PHY_ON);
ee12b079 9:80284ab81e74 237 gCS_ADF=1;
ee12b079 9:80284ab81e74 238 wait(1);
ee12b079 9:80284ab81e74 239 check_status;
ee12b079 9:80284ab81e74 240 if((status&0x1F)!=S_PHY_ON){
ee12b079 9:80284ab81e74 241 gPC.printf("PHY_OFF->ON State_transition.SPI Communication failed.State transited to %d \r\n",(int)status);
ee12b079 9:80284ab81e74 242 temp_spi_err=true;
ee12b079 9:80284ab81e74 243 }
ee12b079 9:80284ab81e74 244 else{
ee12b079 9:80284ab81e74 245 gPC.printf("PHY_OFF->ON Succesful\r\n");
ee12b079 9:80284ab81e74 246 }
ee12b079 9:80284ab81e74 247
ee12b079 9:80284ab81e74 248 gCS_ADF=0;
ee12b079 9:80284ab81e74 249 spi.write(CMD_PHY_TX);
ee12b079 9:80284ab81e74 250 gCS_ADF=1;
ee12b079 9:80284ab81e74 251 wait(1);
ee12b079 9:80284ab81e74 252 check_status;
ee12b079 9:80284ab81e74 253 if((status&0x1F)!=S_PHY_TX){
ee12b079 9:80284ab81e74 254 gPC.printf("PHY_ON->TX State_transition failed .SPI Communication failed.State transited to %d \r\n",(int)status);
ee12b079 9:80284ab81e74 255 temp_spi_err=true;
ee12b079 9:80284ab81e74 256 //Remove this
ee12b079 9:80284ab81e74 257 /*gPC.printf("Resetting Hardware\r\n");
ee12b079 9:80284ab81e74 258 gCS_ADF=0;
ee12b079 9:80284ab81e74 259 spi.write(CMD_HW_RESET);
ee12b079 9:80284ab81e74 260 gCS_ADF=1;
ee12b079 9:80284ab81e74 261 wait(1);
ee12b079 9:80284ab81e74 262 check_status;
ee12b079 9:80284ab81e74 263
ee12b079 9:80284ab81e74 264 gCS_ADF=0;
ee12b079 9:80284ab81e74 265 spi.write(CMD_PHY_OFF);
ee12b079 9:80284ab81e74 266 gCS_ADF=1;
ee12b079 9:80284ab81e74 267 wait(1);
ee12b079 9:80284ab81e74 268 check_status;
ee12b079 9:80284ab81e74 269 gPC.printf("Writing BBRAM\r\n");
ee12b079 9:80284ab81e74 270 bbram_write;
ee12b079 9:80284ab81e74 271 bbram_check;
ee12b079 9:80284ab81e74 272 gPC.printf("Configuring Device\r\n");
ee12b079 9:80284ab81e74 273 gCS_ADF=0;
ee12b079 9:80284ab81e74 274 spi.write(CMD_CONFIG_DEV);
ee12b079 9:80284ab81e74 275 gCS_ADF=1;
ee12b079 9:80284ab81e74 276 wait(1);
ee12b079 9:80284ab81e74 277 check_status;
ee12b079 9:80284ab81e74 278 gPC.printf("PHY_ONning\r\n");
ee12b079 9:80284ab81e74 279 gCS_ADF=0;
ee12b079 9:80284ab81e74 280 spi.write(CMD_PHY_ON);
ee12b079 9:80284ab81e74 281 gCS_ADF=1;
ee12b079 9:80284ab81e74 282 wait(1);
ee12b079 9:80284ab81e74 283 check_status;//Problem is after here
ee12b079 9:80284ab81e74 284 gPC.printf("PHY_TXing\r\n");
ee12b079 9:80284ab81e74 285 gCS_ADF=0;
ee12b079 9:80284ab81e74 286 spi.write(CMD_PHY_TX);
ee12b079 9:80284ab81e74 287 gCS_ADF=1;
ee12b079 9:80284ab81e74 288 wait(1);
ee12b079 9:80284ab81e74 289 check_status;
ee12b079 9:80284ab81e74 290 */
ee12b079 9:80284ab81e74 291 }
ee12b079 9:80284ab81e74 292 else
ee12b079 9:80284ab81e74 293 gPC.printf("PHY_ON->TX Succesful\r\n");
ee12b079 9:80284ab81e74 294
ee12b079 9:80284ab81e74 295 gPC.printf("PHY_TX->ON Verification\r\n");
ee12b079 9:80284ab81e74 296 check_status;
ee12b079 9:80284ab81e74 297 gCS_ADF=0;
ee12b079 9:80284ab81e74 298 spi.write(CMD_PHY_ON);
ee12b079 9:80284ab81e74 299 gCS_ADF=1;
ee12b079 9:80284ab81e74 300 wait(1);
ee12b079 9:80284ab81e74 301 check_status;
ee12b079 9:80284ab81e74 302 if((status&0x1F)!=S_PHY_ON){
ee12b079 9:80284ab81e74 303 gPC.printf("PHY_TX->ON State_transition failed .State transited to %d \r\n",(int)status);
ee12b079 9:80284ab81e74 304 temp_spi_err=true;
ee12b079 9:80284ab81e74 305 }
ee12b079 9:80284ab81e74 306 else{
ee12b079 9:80284ab81e74 307 gPC.printf("PHY_TX->ON Succesful\r\n");
ee12b079 9:80284ab81e74 308 }
ee12b079 9:80284ab81e74 309
ee12b079 9:80284ab81e74 310 gCS_ADF=0;
ee12b079 9:80284ab81e74 311 spi.write(CMD_PHY_OFF);
ee12b079 9:80284ab81e74 312 gCS_ADF=1;
ee12b079 9:80284ab81e74 313 wait(1);
ee12b079 9:80284ab81e74 314 check_status;
ee12b079 9:80284ab81e74 315 if((status&0x1F)!=S_PHY_OFF){
ee12b079 9:80284ab81e74 316 gPC.printf("PHY_ON->OFFState_transition failed .State transited to %d \r\n",(int)status);
ee12b079 9:80284ab81e74 317 temp_spi_err=true;
ee12b079 9:80284ab81e74 318 }
ee12b079 9:80284ab81e74 319 else{
ee12b079 9:80284ab81e74 320 gPC.printf("PHY_ON->OFF Succesful\r\n");
ee12b079 9:80284ab81e74 321 }
ee12b079 9:80284ab81e74 322
ee12b079 9:80284ab81e74 323 if(!temp_spi_err){
ee12b079 9:80284ab81e74 324 gPC.printf("ADF_Successful_configured\r\n");
ee12b079 9:80284ab81e74 325 }
ee12b079 9:80284ab81e74 326
ee12b079 9:80284ab81e74 327 }
ee12b079 9:80284ab81e74 328
ee12b079 9:80284ab81e74 329 /********************Code for Verification SPI Connection_ Check fullSPI***********************************/
ee12b079 9:80284ab81e74 330
krishanprajapat 0:578d0f87988f 331 #define assrt_phy_off(return_this) {\
krishanprajapat 0:578d0f87988f 332 int cmd_err_cnt = 0;\
krishanprajapat 0:578d0f87988f 333 int spi_err_cnt = 0;\
krishanprajapat 0:578d0f87988f 334 int state_err_cnt = 0;\
krishanprajapat 0:578d0f87988f 335 for(int i = 0 ; i < 40 ;i++){\
krishanprajapat 0:578d0f87988f 336 check_status;\
krishanprajapat 0:578d0f87988f 337 if(status == 0xB1){\
krishanprajapat 0:578d0f87988f 338 return_this = 0;\
krishanprajapat 0:578d0f87988f 339 break;\
krishanprajapat 0:578d0f87988f 340 }\
krishanprajapat 0:578d0f87988f 341 else if(cmd_err_cnt>THRS||spi_err_cnt>THRS){\
krishanprajapat 0:578d0f87988f 342 return_this = 1;\
krishanprajapat 0:578d0f87988f 343 break;\
krishanprajapat 0:578d0f87988f 344 }\
krishanprajapat 0:578d0f87988f 345 else if(state_err_cnt>STATE_ERR_THRS){\
krishanprajapat 0:578d0f87988f 346 return_this = 1;\
krishanprajapat 0:578d0f87988f 347 break;\
krishanprajapat 0:578d0f87988f 348 }\
krishanprajapat 0:578d0f87988f 349 else if( (status & 0xA0) == 0xA0 ){\
krishanprajapat 0:578d0f87988f 350 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 351 spi.write(CMD_PHY_OFF);\
krishanprajapat 0:578d0f87988f 352 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 353 wait_us(PHY_OFF_EXEC_TIME);\
krishanprajapat 0:578d0f87988f 354 state_err_cnt++;\
krishanprajapat 0:578d0f87988f 355 }\
krishanprajapat 0:578d0f87988f 356 else if(status&0x80==0x00){\
krishanprajapat 0:578d0f87988f 357 wait_ms(5);\
krishanprajapat 0:578d0f87988f 358 spi_err_cnt++;\
krishanprajapat 0:578d0f87988f 359 }\
krishanprajapat 0:578d0f87988f 360 else {\
krishanprajapat 0:578d0f87988f 361 wait_ms(1);\
krishanprajapat 0:578d0f87988f 362 cmd_err_cnt++;\
krishanprajapat 0:578d0f87988f 363 }\
krishanprajapat 0:578d0f87988f 364 }\
krishanprajapat 0:578d0f87988f 365 }
krishanprajapat 0:578d0f87988f 366 #define initial_adf_check {\
ee12b079 9:80284ab81e74 367 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 368 spi.write(CMD_PHY_OFF);\
ee12b079 9:80284ab81e74 369 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 370 int tempReturn = 0;\
krishanprajapat 0:578d0f87988f 371 bool flag = false;\
krishanprajapat 0:578d0f87988f 372 while( hw_reset_err_cnt < 2 ){\
krishanprajapat 0:578d0f87988f 373 assrt_phy_off( tempReturn);\
krishanprajapat 0:578d0f87988f 374 if( !tempReturn ){\
krishanprajapat 0:578d0f87988f 375 bbram_write;\
ee12b079 9:80284ab81e74 376 bbram_check;\
krishanprajapat 0:578d0f87988f 377 bbram_flag=1;\
krishanprajapat 0:578d0f87988f 378 flag = true;\
krishanprajapat 0:578d0f87988f 379 break;\
krishanprajapat 0:578d0f87988f 380 }\
krishanprajapat 0:578d0f87988f 381 else{\
krishanprajapat 0:578d0f87988f 382 hardware_reset(0);\
krishanprajapat 0:578d0f87988f 383 hw_reset_err_cnt++;\
krishanprajapat 0:578d0f87988f 384 gPC.puts("Resetting hardware\r\n");\
krishanprajapat 0:578d0f87988f 385 }\
krishanprajapat 0:578d0f87988f 386 }\
krishanprajapat 0:578d0f87988f 387 if( flag == false ){\
krishanprajapat 0:578d0f87988f 388 gPC.puts("Seems to be SPI problem\r\n");\
krishanprajapat 0:578d0f87988f 389 }\
krishanprajapat 0:578d0f87988f 390 assrt_phy_off(tempReturn);\
krishanprajapat 0:578d0f87988f 391 if(!bbram_flag){\
krishanprajapat 0:578d0f87988f 392 bcn_flag=1;\
krishanprajapat 0:578d0f87988f 393 }\
krishanprajapat 0:578d0f87988f 394 }
krishanprajapat 0:578d0f87988f 395
krishanprajapat 0:578d0f87988f 396 bool hardware_reset(int bcn_call){
krishanprajapat 0:578d0f87988f 397 for(int i= 0; i < 20 ; i++){
krishanprajapat 0:578d0f87988f 398 gCS_ADF=0;
krishanprajapat 0:578d0f87988f 399 spi.write(CMD_HW_RESET);
krishanprajapat 0:578d0f87988f 400 gCS_ADF=1;
krishanprajapat 0:578d0f87988f 401 wait_ms(2);// Typically 1 ms
krishanprajapat 0:578d0f87988f 402 int count=0;
krishanprajapat 0:578d0f87988f 403 int temp_return = 0;
krishanprajapat 0:578d0f87988f 404 while(count<10 && miso_err_cnt<10){
krishanprajapat 0:578d0f87988f 405 if(MISO_PIN){
krishanprajapat 0:578d0f87988f 406 assrt_phy_off(temp_return);
krishanprajapat 0:578d0f87988f 407 if(!temp_return){
krishanprajapat 0:578d0f87988f 408 return 0;
krishanprajapat 0:578d0f87988f 409 }
krishanprajapat 0:578d0f87988f 410 count++;
krishanprajapat 0:578d0f87988f 411 }
krishanprajapat 0:578d0f87988f 412 else{
krishanprajapat 0:578d0f87988f 413 wait_us(50);
krishanprajapat 0:578d0f87988f 414 miso_err_cnt++;
krishanprajapat 0:578d0f87988f 415 }
krishanprajapat 0:578d0f87988f 416 }
krishanprajapat 0:578d0f87988f 417 }
krishanprajapat 0:578d0f87988f 418 return 1;
krishanprajapat 0:578d0f87988f 419 }
krishanprajapat 0:578d0f87988f 420
ee12b079 9:80284ab81e74 421 //---------------------------------------------------------------------------
ee12b079 9:80284ab81e74 422 //Change made here: register verification
krishanprajapat 0:578d0f87988f 423
krishanprajapat 0:578d0f87988f 424
krishanprajapat 0:578d0f87988f 425 #define write_data {\
krishanprajapat 3:bac82a182b28 426 counter++;\
krishanprajapat 0:578d0f87988f 427 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 428 spi.write(0x0B);\
krishanprajapat 0:578d0f87988f 429 spi.write(0x36);\
krishanprajapat 0:578d0f87988f 430 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 431 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 432 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 433 if(buffer_state){\
krishanprajapat 0:578d0f87988f 434 spi.write(0x18);\
krishanprajapat 0:578d0f87988f 435 spi.write(0x20);\
krishanprajapat 0:578d0f87988f 436 for(unsigned char i=0; i<112;i++){\
krishanprajapat 0:578d0f87988f 437 spi.write(buffer_112[i]);\
krishanprajapat 0:578d0f87988f 438 }\
krishanprajapat 0:578d0f87988f 439 }\
krishanprajapat 0:578d0f87988f 440 else{\
krishanprajapat 0:578d0f87988f 441 spi.write(0x18);\
krishanprajapat 0:578d0f87988f 442 spi.write(0x90);\
krishanprajapat 0:578d0f87988f 443 for(unsigned char i=0; i<112;i++){\
krishanprajapat 0:578d0f87988f 444 spi.write(buffer_112[i]);\
krishanprajapat 0:578d0f87988f 445 }\
krishanprajapat 0:578d0f87988f 446 }\
krishanprajapat 0:578d0f87988f 447 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 448 buffer_state = !buffer_state;\
krishanprajapat 0:578d0f87988f 449 }
krishanprajapat 0:578d0f87988f 450 void send_tm_from_SD_card(){
krishanprajapat 0:578d0f87988f 451 }
krishanprajapat 0:578d0f87988f 452
krishanprajapat 0:578d0f87988f 453 void check(){
krishanprajapat 0:578d0f87988f 454 if(IRQ){
krishanprajapat 0:578d0f87988f 455 if(!ADF_off){
krishanprajapat 0:578d0f87988f 456 if(stop_transmission){
krishanprajapat 0:578d0f87988f 457 write_data;
krishanprajapat 0:578d0f87988f 458 ADF_off=true;
krishanprajapat 0:578d0f87988f 459
krishanprajapat 0:578d0f87988f 460 }
krishanprajapat 0:578d0f87988f 461 else{
krishanprajapat 0:578d0f87988f 462 write_data;
krishanprajapat 0:578d0f87988f 463 transmitdata();
krishanprajapat 0:578d0f87988f 464 }
krishanprajapat 0:578d0f87988f 465 }
krishanprajapat 0:578d0f87988f 466 else{
krishanprajapat 3:bac82a182b28 467 wait_ms(20);
krishanprajapat 0:578d0f87988f 468 ticker.detach();
krishanprajapat 0:578d0f87988f 469 gCS_ADF=0;
krishanprajapat 0:578d0f87988f 470 spi.write(0xB1);
krishanprajapat 0:578d0f87988f 471 gCS_ADF=1;
krishanprajapat 0:578d0f87988f 472 gPC.puts("transmission done\r\n");
krishanprajapat 3:bac82a182b28 473 cout<<counter<<endl;
krishanprajapat 0:578d0f87988f 474 loop_on=false;
krishanprajapat 0:578d0f87988f 475 }
krishanprajapat 0:578d0f87988f 476 }
krishanprajapat 0:578d0f87988f 477 }
krishanprajapat 0:578d0f87988f 478
krishanprajapat 0:578d0f87988f 479
krishanprajapat 0:578d0f87988f 480 #define send_data {\
krishanprajapat 0:578d0f87988f 481 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 482 spi.write(0xBB);\
krishanprajapat 0:578d0f87988f 483 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 484 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 485 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 486 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 487 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 488 if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 489 }\
krishanprajapat 0:578d0f87988f 490 else{\
krishanprajapat 0:578d0f87988f 491 transmitdata();\
krishanprajapat 0:578d0f87988f 492 }\
krishanprajapat 0:578d0f87988f 493 write_data;\
krishanprajapat 0:578d0f87988f 494 if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 495 }else{\
krishanprajapat 0:578d0f87988f 496 transmitdata();\
krishanprajapat 0:578d0f87988f 497 }\
krishanprajapat 0:578d0f87988f 498 write_data;\
krishanprajapat 0:578d0f87988f 499 if(sent_tmfrom_SDcard){\
krishanprajapat 0:578d0f87988f 500 }else{\
krishanprajapat 0:578d0f87988f 501 transmitdata();\
krishanprajapat 0:578d0f87988f 502 }\
krishanprajapat 0:578d0f87988f 503 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 504 spi.write(0xB1);\
krishanprajapat 0:578d0f87988f 505 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 506 wait_us(300);\
krishanprajapat 0:578d0f87988f 507 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 508 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 509 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 510 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 511 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 512 spi.write(0xB5);\
krishanprajapat 0:578d0f87988f 513 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 514 wait_us(300);\
krishanprajapat 0:578d0f87988f 515 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 516 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 517 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 518 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 519 ticker.attach_us(&check,32000);\
krishanprajapat 0:578d0f87988f 520 }
krishanprajapat 0:578d0f87988f 521
krishanprajapat 0:578d0f87988f 522 void adf_not_SDcard(){
krishanprajapat 0:578d0f87988f 523 buffer_state = true;
krishanprajapat 0:578d0f87988f 524 // last_buffer = false;
krishanprajapat 0:578d0f87988f 525 loop_on = true;
krishanprajapat 0:578d0f87988f 526 ADF_off = false;
krishanprajapat 0:578d0f87988f 527 sent_tmfrom_SDcard = false;
krishanprajapat 0:578d0f87988f 528
krishanprajapat 0:578d0f87988f 529 // signal = COM_MNG_TMTC_SIGNAL_ADF_NSD;
ee12b079 9:80284ab81e74 530 initial_adf_check;//Change this function
krishanprajapat 0:578d0f87988f 531 gPC.puts("initial adf check\r\n");
ee12b079 9:80284ab81e74 532
ee12b079 9:80284ab81e74 533 // initiate; //Removed as it is not required
ee12b079 9:80284ab81e74 534
krishanprajapat 0:578d0f87988f 535 gPC.puts("initiate done\r\n");
krishanprajapat 0:578d0f87988f 536 send_data;
krishanprajapat 0:578d0f87988f 537 t.start();
krishanprajapat 0:578d0f87988f 538 // gPC.puts("Inside adf transmission\r\n");
krishanprajapat 0:578d0f87988f 539 // ADF_non_responsive_timeout.attach(&ADF_non_responsive_fun, 10);
krishanprajapat 0:578d0f87988f 540
krishanprajapat 0:578d0f87988f 541 }
ee12b079 9:80284ab81e74 542
ee12b079 9:80284ab81e74 543 void prnt_status(){
ee12b079 9:80284ab81e74 544 switch(status){
ee12b079 9:80284ab81e74 545 case 0xB1:
ee12b079 9:80284ab81e74 546 gPC.printf("PHY_OFF\r\n");
ee12b079 9:80284ab81e74 547 break;
ee12b079 9:80284ab81e74 548 case 0xb2:
ee12b079 9:80284ab81e74 549 gPC.printf("PHY_ON\r\n");
ee12b079 9:80284ab81e74 550 break;
ee12b079 9:80284ab81e74 551 case 0xB3:
ee12b079 9:80284ab81e74 552 gPC.printf("PHY_RX\r\n");
ee12b079 9:80284ab81e74 553 break;
ee12b079 9:80284ab81e74 554 case 0xB4:
ee12b079 9:80284ab81e74 555 gPC.printf("PHY_TX\r\n");
ee12b079 9:80284ab81e74 556 break;
ee12b079 9:80284ab81e74 557 }
ee12b079 9:80284ab81e74 558
ee12b079 9:80284ab81e74 559 }
ee12b079 9:80284ab81e74 560
ee12b079 9:80284ab81e74 561 void command_in(){
ee12b079 9:80284ab81e74 562 int in=0;
ee12b079 9:80284ab81e74 563 gPC.scanf("%d",&in);
ee12b079 9:80284ab81e74 564
ee12b079 9:80284ab81e74 565 switch(in){
ee12b079 9:80284ab81e74 566 case 0 :
ee12b079 9:80284ab81e74 567 check_status;
ee12b079 9:80284ab81e74 568 prnt_status();
ee12b079 9:80284ab81e74 569 break;
ee12b079 9:80284ab81e74 570 case 1:
ee12b079 9:80284ab81e74 571 gPC.printf("HW_RESET");
ee12b079 9:80284ab81e74 572 gCS_ADF=0;
ee12b079 9:80284ab81e74 573 spi.write(CMD_HW_RESET);
ee12b079 9:80284ab81e74 574 gCS_ADF=1;
ee12b079 9:80284ab81e74 575 wait(1);
ee12b079 9:80284ab81e74 576 break;
ee12b079 9:80284ab81e74 577 case 2 :
ee12b079 9:80284ab81e74 578 gPC.printf("CMD_PHY_OFF\r\n");
ee12b079 9:80284ab81e74 579 gCS_ADF=0;
ee12b079 9:80284ab81e74 580 spi.write(CMD_PHY_OFF);
ee12b079 9:80284ab81e74 581 gCS_ADF=1;
ee12b079 9:80284ab81e74 582 wait(1);
ee12b079 9:80284ab81e74 583 break;
ee12b079 9:80284ab81e74 584 case 7 :
ee12b079 9:80284ab81e74 585 gPC.printf("CMD_PHY_ON");
ee12b079 9:80284ab81e74 586 gCS_ADF=0;
ee12b079 9:80284ab81e74 587 spi.write(CMD_PHY_ON);
ee12b079 9:80284ab81e74 588 gCS_ADF=1;
ee12b079 9:80284ab81e74 589 wait(1);
ee12b079 9:80284ab81e74 590
ee12b079 9:80284ab81e74 591 break;
ee12b079 9:80284ab81e74 592 case 8 :
ee12b079 9:80284ab81e74 593 gPC.printf("CMD_PHY_TX");
ee12b079 9:80284ab81e74 594 gCS_ADF=0;
ee12b079 9:80284ab81e74 595 spi.write(CMD_PHY_TX);
ee12b079 9:80284ab81e74 596 gCS_ADF=1;
ee12b079 9:80284ab81e74 597 wait(1);
ee12b079 9:80284ab81e74 598 break;
ee12b079 9:80284ab81e74 599 case 3 :
ee12b079 9:80284ab81e74 600 gPC.printf("BBRAM_Write");
ee12b079 9:80284ab81e74 601 bbram_write;
ee12b079 9:80284ab81e74 602
ee12b079 9:80284ab81e74 603 break;
ee12b079 9:80284ab81e74 604 case 4 :
ee12b079 9:80284ab81e74 605 gPC.printf("BBRAM_CHECK");
ee12b079 9:80284ab81e74 606 bbram_check;
ee12b079 9:80284ab81e74 607 break;
ee12b079 9:80284ab81e74 608 case 6 :
ee12b079 9:80284ab81e74 609 gPC.printf("CMD_CONFIG_DEV");
ee12b079 9:80284ab81e74 610 gCS_ADF=0;
ee12b079 9:80284ab81e74 611 spi.write(CMD_CONFIG_DEV);
ee12b079 9:80284ab81e74 612 gCS_ADF=1;
ee12b079 9:80284ab81e74 613 wait(1);
ee12b079 9:80284ab81e74 614 break;
ee12b079 9:80284ab81e74 615 case 5:
ee12b079 9:80284ab81e74 616 initiate;
ee12b079 9:80284ab81e74 617 break;
ee12b079 9:80284ab81e74 618 case 9:
ee12b079 9:80284ab81e74 619 check_SPI();
ee12b079 9:80284ab81e74 620 break;
ee12b079 9:80284ab81e74 621
ee12b079 9:80284ab81e74 622 case 10:
ee12b079 9:80284ab81e74 623 data_length = sizeof(Adf_data);
ee12b079 9:80284ab81e74 624 cout<<data_length<<endl;
ee12b079 9:80284ab81e74 625 adf_not_SDcard();
ee12b079 9:80284ab81e74 626 break;
ee12b079 9:80284ab81e74 627 }
ee12b079 9:80284ab81e74 628 }
ee12b079 9:80284ab81e74 629
ee12b079 9:80284ab81e74 630 int main(){
ee12b079 9:80284ab81e74 631 gPC.puts("welcome to adf test\r\n");
krishanprajapat 0:578d0f87988f 632 spi.format(8,0);
krishanprajapat 0:578d0f87988f 633 spi.frequency(1000000);
ee12b079 9:80284ab81e74 634 //check_SPI();
ee12b079 9:80284ab81e74 635 //data_length = sizeof(Adf_data);
ee12b079 9:80284ab81e74 636 //cout<<data_length<<endl;
ee12b079 9:80284ab81e74 637 //adf_not_SDcard();
ee12b079 9:80284ab81e74 638 while(1){
krishanprajapat 0:578d0f87988f 639 led = !led; // toggle led
ee12b079 9:80284ab81e74 640 command_in();
ee12b079 9:80284ab81e74 641 //check_SPI();
krishanprajapat 0:578d0f87988f 642 wait(0.2f);
ee12b079 9:80284ab81e74 643 }
ee12b079 9:80284ab81e74 644 gPC.puts("transmission done\r\n");
krishanprajapat 1:0b0579f5bbef 645 }