shubham c
/
ADF_test_6_Manual_Automatic_No_wait_copy_withoutAssertingfunctions
ADF code
Fork of ADF_test by
main.cpp@9:80284ab81e74, 2016-04-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |