//#include "usr_config.h" //#include "bsp_time.h" //#include "system.h" //#include "nrf_gpio.h" //#include "app_charge.h" //#include "app_flash.h" //#include "ble_comm.h" //#include "bsp_adc.h" //#include "app_pair_chargerpin.h" //#include "hal_led.h" //#include "hal_charge.h" //#include "hal_mt.h" //extern void adc_check(void); ////发送协议 ////Host MAC[0] MAC[1] MAC[2]>>>>>> Client ////Client MAC[3] MAC[4] MAC[5]>>>>>> Host //#define HOST_PEAR 1 //#define PIN_LED_RUN 1 //#define DATA_LENGTH 4 //#define BITWIDTH 30 //#define LOW_BIT_DELAY 15 //#define DELAY_SEND 100 //#define DELAY_REPLY 100 //#define DELAY_CHECK 100 //#define DELAY_LEDON (BITWIDTH*(8*DATA_LENGTH+3)*2+DELAY_SEND+DELAY_REPLY+DELAY_CHECK+5*BITWIDTH) //#define LEDON_KEEP 100 //static uint8_t leddisplay_count=0; //unsigned static char rxbuf[DATA_LENGTH]; //unsigned static char txbuf[DATA_LENGTH]; //__IO static char writefig=0; //unsigned static char savebuf[DATA_LENGTH]; //static char one_ms_status = 0; //static void chargerpin_one_ms_pcs(void* t) //{ // unsigned int ms = *(unsigned int*)t; // static unsigned int bit_width = 0; // static unsigned int now_bit = 0; // static unsigned int delay_send_count = 0; // static unsigned int delay_reply_count = 0; // static unsigned int delay_check_count = 0; // static unsigned int delay_ledon_count = 0; // static int bitindex = 0; // static int bytesindes = 0; // static int value = 0; // static int txrxcount = 0; // static char lowbitdelay=0; // switch (one_ms_status) // { // case 0://init // bit_width = 0; // now_bit = 0; // delay_send_count = 0; // delay_reply_count = 0; // delay_check_count = 0; // delay_ledon_count = 0; // bitindex = 0; // bytesindes = 0; // value = 0; // txrxcount = 0; // one_ms_status = 0; // lowbitdelay=0; // nrf_gpio_cfg( // PIN_CHARGING, // NRF_GPIO_PIN_DIR_OUTPUT, // NRF_GPIO_PIN_INPUT_CONNECT, // NRF_GPIO_PIN_NOPULL, // NRF_GPIO_PIN_D0H1, // NRF_GPIO_PIN_NOSENSE); // nrf_gpio_cfg_watcher(PIN_CHARGING); // one_ms_status = 1; // nrf_gpio_pin_clear(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("nrf_gpio_cfg_watcher(PIN_CHARGING); clear.%d\r\n", ms); // break; // case 1: // if (now_bit == nrf_gpio_pin_read(PIN_CHARGING)) // { // bit_width++; // } // else // { // //由高电平切换到低电平,下降信号 // if (now_bit == 1) // { // now_bit = 0; // if ((bit_width > 1.5 * BITWIDTH - LOW_BIT_DELAY/3) && (bit_width < 1.5 * BITWIDTH + LOW_BIT_DELAY/3)) // { // one_ms_status = 3; // txrxcount = 1.5 * BITWIDTH; // value = 30; // if (mFlash.isHost == 0) // { // delay_ledon_count = 1.5 * BITWIDTH + DELAY_SEND; // PAIR_CHARGERPIN_PRINT("delay_ledon_count = 1.5 * BITWIDTH + DELAY_SEND.%d\r\n", txrxcount); // } // else // { // delay_ledon_count = 2.5 * BITWIDTH + DELAY_SEND + BITWIDTH * 8 * DATA_LENGTH + 1.5 * BITWIDTH + DELAY_REPLY; // PAIR_CHARGERPIN_PRINT("delay_ledon_count = 2.5 * BITWIDTH + DELAY_SEND + BITWIDTH*8*DATA_LENGTH + 1.5 * BITWIDTH + DELAY_REPLY .%d\r\n", txrxcount); // } // PAIR_CHARGERPIN_PRINT("-----------------------RX MODE start .%d\r\n", bit_width); // break; // } // else // { // if (mFlash.isHost) // { // delay_send_count = 1; //左边鞋发送数据 // } // PAIR_CHARGERPIN_INFO("EXTI CHARGEING MOID.%d bit_width %d \r\n", ms,bit_width); // } // } // else // { // now_bit = 1; // delay_send_count = 0; // delay_reply_count = 0; // delay_check_count = 0; // nrf_gpio_pin_write(PIN_LED_RUN, 0); // delay_ledon_count = 0; // PAIR_CHARGERPIN_PRINT("delay_ledon_count = 0 .%d\r\n", txrxcount); // PAIR_CHARGERPIN_INFO("INTO CHARGEING MOID.%d\r\n", ms); // } // bit_width = 0; // } // // if (delay_send_count != 0) // { // delay_send_count++; // } // if (delay_send_count > DELAY_SEND) // { // unsigned char macbuff[32]; // delay_send_count = 0; // PAIR_CHARGERPIN_PRINT("BEGIN send MAC.%d\r\n", ms); // Get_MACaddr(macbuff); // macbuff[DATA_LENGTH - 1] = 0; // for (int i = 0; i < DATA_LENGTH - 1; i++) // { // macbuff[DATA_LENGTH - 1] += macbuff[i]; // } // memcpy(txbuf, macbuff, DATA_LENGTH); // PAIR_CHARGERPIN_PRINT("host_mac send.%d\r\n", ms); // one_ms_status = 2; // // txrxcount = 0; // for (int i = 0; i < DATA_LENGTH; i++) // { // PAIR_CHARGERPIN_PRINT("txbuf.%x\r\n", txbuf[i]); // } // break; // } // if (delay_reply_count != 0) // { // delay_reply_count++; // } // if (delay_reply_count > DELAY_REPLY) // { // unsigned char macbuff[16]; // delay_reply_count = 0; // PAIR_CHARGERPIN_PRINT("BEGIN send MAC.%d\r\n", ms); // Get_MACaddr(macbuff); // memcpy(txbuf, &macbuff[3], DATA_LENGTH); // txbuf[DATA_LENGTH - 1] = 0; // for (int i = 0; i < DATA_LENGTH - 1; i++) // { // txbuf[DATA_LENGTH - 1] += txbuf[i]; // } // PAIR_CHARGERPIN_PRINT("host_mac send.%d\r\n", ms); // one_ms_status = 2; // txrxcount = 0; // for (int i = 0; i < DATA_LENGTH; i++) // { // PAIR_CHARGERPIN_PRINT("txbuf.%x\r\n", txbuf[i]); // } // break; // } // if (delay_check_count != 0) // { // delay_check_count++; // } // if (delay_check_count > DELAY_CHECK) // { // delay_check_count = 0; // one_ms_status = 4; // txrxcount = 0; // PAIR_CHARGERPIN_PRINT("CHECK start.%d\r\n", ms); // break; // } // else if (delay_check_count > 0) // { // if (now_bit > 0) // { // delay_check_count = 0; // PAIR_CHARGERPIN_PRINT("CANCEL CHECK.%d\r\n", ms); // } // } // break; // case 2://tx // { // lowbitdelay++; // static char send_interrupt = 0; // if ((now_bit == 0) && (nrf_gpio_pin_read(PIN_CHARGING)) && (lowbitdelay>LOW_BIT_DELAY)) // { // if (mFlash.isHost) // { // one_ms_status = 1; // nrf_gpio_pin_clear(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); // delay_ledon_count = 0; // PAIR_CHARGERPIN_PRINT("delay_ledon_count1 = 0;\r\n", txrxcount); // PAIR_CHARGERPIN_PRINT("EXTI SEND MODE.CAN NOT SET LOW %d\r\n", txrxcount); // send_interrupt = 0; // break; // } // else // { // nrf_gpio_pin_clear(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); // send_interrupt = 1; // } // } // if ((txrxcount == 0) && (send_interrupt == 0)) // { // nrf_gpio_pin_set(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("set.%d\r\n", ms); // now_bit = 1; // } // if ((txrxcount == 1.5 * BITWIDTH) && (send_interrupt == 0)) // { // nrf_gpio_pin_clear(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); // now_bit = 0; // lowbitdelay=0; // } // if ((txrxcount >= (int)(2.5 * BITWIDTH) && (txrxcount - (int)(2.5 * BITWIDTH)) % BITWIDTH == 0) && (send_interrupt == 0)) // { // bytesindes = ((txrxcount - (int)(2.5 * BITWIDTH)) / BITWIDTH) / 8; // bitindex = 7 - ((txrxcount - (int)(2.5 * BITWIDTH)) / BITWIDTH) % 8; // nrf_gpio_pin_write(PIN_CHARGING, (txbuf[bytesindes] >> bitindex) & 0x01); // lowbitdelay=0; // PAIR_CHARGERPIN_PRINT("write.%d %d\r\n", ((txbuf[bytesindes] >> bitindex) & 0x01), ms); // now_bit = (txbuf[bytesindes] >> bitindex) & 0x01; // PAIR_CHARGERPIN_PRINT("%d %d %d %d %x\r\n", (txrxcount - (int)(2.5 * BITWIDTH)) / BITWIDTH // , bytesindes // , bitindex // , (txbuf[bytesindes] >> bitindex) & 0x01 // , txbuf[bytesindes] // ); // } // if (send_interrupt) // { // if (nrf_gpio_pin_read(PIN_CHARGING) == 0) // { // send_interrupt = 0; // delay_ledon_count = DELAY_SEND; // PAIR_CHARGERPIN_PRINT("delay_ledon_count = DELAY_SEND;.%d\r\n", txrxcount); // PAIR_CHARGERPIN_PRINT("RX SEND MODE MAC START.%d\r\n", txrxcount); // txrxcount = 0; // break; // } // } // // if (txrxcount == BITWIDTH * (8 * DATA_LENGTH + 2.5) - 1) // { // nrf_gpio_pin_clear(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); // if (mFlash.isHost == 0) // { // delay_check_count = 1; // } // } // if(delay_check_count!=0)delay_check_count++; // if (txrxcount >= BITWIDTH * (8 * DATA_LENGTH + 2.5) - 1 + LOW_BIT_DELAY) // { // one_ms_status = 1; // send_interrupt = 0; // now_bit = 0; // bit_width = 0; // PAIR_CHARGERPIN_PRINT("SEDN DONE .%d pin one_ms_status %d\r\n", ms,nrf_gpio_pin_read(PIN_CHARGING)); // break; // } // txrxcount++; // } // break; // case 3://rx // if (now_bit == nrf_gpio_pin_read(PIN_CHARGING)) // { // bit_width++; // } // else // { // if (now_bit == 1) // { // now_bit = 0; // if ((bit_width > 1.5 * BITWIDTH - 3) && (bit_width < 1.8 * BITWIDTH + 3)) // { // txrxcount = 1.5 * BITWIDTH; // value = 30; // delay_ledon_count = DELAY_SEND + 1.5 * BITWIDTH; // PAIR_CHARGERPIN_PRINT("DELAY_SEND + 1.5 * BITWIDTHt .%d\r\n", txrxcount); // PAIR_CHARGERPIN_PRINT("RX MODE restart .%d\r\n", ms); // } // } // else // { // now_bit = 1; // } // bit_width = 0; // } // if (txrxcount >= (int)(3.5 * BITWIDTH) && (txrxcount - (int)(3.5 * BITWIDTH)) % BITWIDTH == 0) // { // bytesindes = ((txrxcount - (int)(3.5 * BITWIDTH)) / BITWIDTH) / 8; // bitindex = 7 - ((txrxcount - (int)(3.5 * BITWIDTH)) / BITWIDTH) % 8; // if (value > 0) // { // rxbuf[bytesindes] |= 0x01 << bitindex; // } // else // { // rxbuf[bytesindes] &= ~(0x01 << bitindex); // } // PAIR_CHARGERPIN_PRINT("%d %d %d %d %x\r\n", txrxcount // , bytesindes // , bitindex // , value // , rxbuf[bytesindes] // ); // value = 0; // nrf_gpio_pin_toggle(PIN_LED_RUN); // } // else // { // if (now_bit) // { // value++; // } // else // { // value--; // } // } // if (txrxcount >= BITWIDTH * (8 * DATA_LENGTH + 2.5)) // { // unsigned char dataerrcheck = 0; // unsigned char crc = 0; // one_ms_status = 1; // PAIR_CHARGERPIN_PRINT("RECEVIC DONE .%d\r\n", txrxcount); // nrf_gpio_pin_clear(PIN_LED_RUN); // PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); // for (int i = 0; i < DATA_LENGTH - 1; i++) // { // crc += rxbuf[i]; // } // for (int i = 0; i < DATA_LENGTH - 1; i++) // { // if (rxbuf[i] == 0) // { // dataerrcheck++; // } // } // if (dataerrcheck == DATA_LENGTH - 1) // { // PAIR_CHARGERPIN_PRINT("CRC ERROR ALL 0x00.%x\r\n", crc); // delay_ledon_count = 0; // PAIR_CHARGERPIN_PRINT("delay_ledon_count 2= 0;\r\n", txrxcount); // break; // } // dataerrcheck = 0; // for (int i = 0; i < DATA_LENGTH - 1; i++) // { // if (rxbuf[i] == 0xff) // { // dataerrcheck++; // } // } // if (dataerrcheck == DATA_LENGTH - 1) // { // PAIR_CHARGERPIN_PRINT("CRC ERROR ALL 0xFF.%x\r\n", crc); // delay_ledon_count = 0; // PAIR_CHARGERPIN_PRINT("delay_ledon_count 3= 0;\r\n", txrxcount); // break; // } // if (crc == rxbuf[DATA_LENGTH - 1]) // { // if (mFlash.isHost) // { // delay_check_count = 1; //延时校验计数器 // } // else // { // delay_reply_count = 1; //延时回复计数器 // } // PAIR_CHARGERPIN_PRINT("---------------CRC SUCCESS .%x----------------\r\n", crc); // } // else // { // PAIR_CHARGERPIN_PRINT("CRC ERROR .%x\r\n", crc); // delay_ledon_count = 0; // PAIR_CHARGERPIN_PRINT("delay_ledon_count 4= 0;\r\n", txrxcount); // } // for (int i = 0; i < DATA_LENGTH; i++) // { // PAIR_CHARGERPIN_PRINT("rxbuf[%d].%x\r\n",i, rxbuf[i]); // } // } // txrxcount++; // break; // case 4: // if (nrf_gpio_pin_read(PIN_CHARGING)) // { // value++; // } // else // { // value--; // } // if (mFlash.isHost) // { // if (txrxcount == 0) // { // value = 0; // nrf_gpio_pin_set(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("set.%d\r\n", ms); // } // if (txrxcount == 3 * BITWIDTH) // { // nrf_gpio_pin_clear(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("clear.%d\r\n", delay_ledon_count); // } // if (txrxcount >= 3 * BITWIDTH + LOW_BIT_DELAY) // { // value = 0; // one_ms_status = 1; // now_bit = 0; // bit_width = 0; // } // } // else // { // if (txrxcount == 0) // { // value = 0; // } // if (txrxcount > 3 * BITWIDTH) // { // if (value < 2 * BITWIDTH) // { // PAIR_CHARGERPIN_PRINT("CHECK ERROR .%d\r\n", txrxcount); // delay_ledon_count = 0; // PAIR_CHARGERPIN_PRINT("delay_ledon_count 5= 0;\r\n", txrxcount); // } // else // { // PAIR_CHARGERPIN_PRINT("CHECK DONE .%d\r\n", txrxcount); // } // value = 0; // one_ms_status = 1; // nrf_gpio_pin_clear(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); // now_bit = 1; // bit_width = 0; // } // } // txrxcount++; // break; // } // if (delay_ledon_count != 0) // { // delay_ledon_count++; // } // if (delay_ledon_count == DELAY_LEDON) // { // PAIR_CHARGERPIN_PRINT("LEDCOPEN.%d\r\n", ms); // memcpy(savebuf,rxbuf,DATA_LENGTH-1); // writefig=1; // } // if ((delay_ledon_count > DELAY_LEDON ) // && (delay_ledon_count - DELAY_LEDON == LEDON_KEEP)) // { // delay_ledon_count = 0; // PAIR_CHARGERPIN_PRINT("delay_ledon_count 6= 0;\r\n", txrxcount); // PAIR_CHARGERPIN_PRINT("LEDCLOSE.%d\r\n", ms); // } //} //void pair_led_pcs(void) //{ // leddisplay_count++; // if(leddisplay_count%2==0) // { // LED_Start(LED_PAIR,COLOR_BLACK); // PAIR_CHARGERPIN_PRINT("LED_Start(LED_PAIR,COLOR_BLACK);.%d\r\n"); // } // else // { // LED_Start(LED_PAIR,COLOR_WHITE); // } // if(leddisplay_count>20) // { // leddisplay_count=0; // LED_Stop(LED_PAIR);PAIR_CHARGERPIN_PRINT("!!!!!!!!---->>>LED_Stop(LED_PAIR);\r\n"); // Process_SetHoldOn(pair_led_pcs,0); // Process_Stop(pair_led_pcs); // } //} //void stop_pair_led(void) //{ // if(leddisplay_count==0)return; // Process_SetHoldOn(pair_led_pcs,0); // Process_Stop(pair_led_pcs); // leddisplay_count=0; //} //PAIR_START_REGISTER(stop_pair_led); //void mtrun(void) //{ // //MT_Run(200); //} //PAIR_START_REGISTER(mtrun); ////写配对相关的flish //static int pair_writeflish(unsigned char* macAddr_L, unsigned char* macAddr_R) //{ // uint8_t offest =0; // if(mFlash.isHost){offest =3;} // // if (memcmp(macAddr_R, mFlash.mClient.macAddr+offest, 3) != 0) // { // goto writein; // } // if (mFlash.mClient.isConfig != 'C') // { // goto writein; // } // PAIR_CHARGERPIN_PRINT("mFlash.mClient.isConfig:%X\n", mFlash.mClient.isConfig); // PAIR_CHARGERPIN_PRINT("mFlash.mClient.macAddr:%02X %02X %02X\n", mFlash.mClient.macAddr[0], mFlash.mClient.macAddr[1], mFlash.mClient.macAddr[2]); // PAIR_CHARGERPIN_PRINT("mFlash.macHost:%02X %02X %02X\n", mFlash.macHost[0], mFlash.macHost[1], mFlash.macHost[2]); // return 0; //writein: // mFlash.mClient.isConfig = 'C'; // uint8_t i=0; // for (i = 0; i < 6; i++){mFlash.macHost[i] = macAddr_L[i];} // // for (i = 0; i < 3; i++) // mFlash.mClient.macAddr[i+offest] = macAddr_R[i]; //从机自身mac地址 // // //保存数据到备份区域里面 // for( i=0; i=3) // { // PAIR_CHARGERPIN_PRINT("tim_read_cb 3ms \n",mFlash.isHost); // if(ADC_OP_SUCCESS!=ADC_Read_CallBack_Once(PIN_CHARGING_CHANNEL,adc_cab)) // { // adc_check(); // PAIR_CHARGERPIN_PRINT("adc_check init \n",mFlash.isHost); // } // Process_Stop(null_pcs); // TIME_UnRegist(tim_read_cb); // } //} //static pair_line_t pair_line = DISCONNECT_CHARGE; //void Delegate_up_pin(void *t) //{ //typedef void (*cbdull)(void); // cbdull cbh = adc_check; // if(TIME_GetTicks()-pulluppcs_timer>=3) // { // TIME_UnRegist(Delegate_up_pin); // Process_Stop(null_pcs); // PAIR_CHARGERPIN_PRINT("Delegate_up_pin %d\n",mFlash.isHost); // } //} //void adc_check(void) //{ // static unsigned char status=0; // short ADC_value=0; // // static unsigned int delay_pair_count=0; // static unsigned int overtime=0; // static unsigned char ishost; // switch(status) // { // case 0: // ishost=mFlash.isHost; // ADC_Disable(); // ADC_SetPinChannel(PIN_CHARGING,PIN_CHARGING_CHANNEL,NRF_GPIO_PIN_NOPULL); // ADC_Initialize(); // Process_UpdatePeroid(adc_check,ADC_CHECKMS); // Process_SetHoldOn(adc_check,0); // nrf_gpio_pin_write(PIN_LED_RUN, 0); // pair_done_pcs(); // status=1; // break; // case 1: // if(ishost!=mFlash.isHost) // { // status=0; // PAIR_CHARGERPIN_PRINT("mFlash.isHost change %d\n",mFlash.isHost); // } // // if(ADC_OP_SUCCESS!=ADC_Read(PIN_CHARGING_CHANNEL,&ADC_value)) // { // PAIR_CHARGERPIN_PRINT("ADC_Read ERROR %d\n",mFlash.isHost); // } // // if(mFlash.isHost) // { // pulluppcs_timer=TIME_GetTicks(); // nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_NOPULL); // } // // PAIR_CHARGERPIN_PRINT( "ADC ( %d ):isHost %d pair_line %d\n", ADC_value,mFlash.isHost,pair_line); // // if((ADC_value=CHARGE_ADC) // { // PAIR_CHARGERPIN_PRINT(" CHARGE_ADC \n"); // if((pair_line != CHARGE)&&(mFlash.isHost)) // { // PAIR_CHARGERPIN_PRINT("--------------------------------------------------------------------INTO CHARGE_ADC \n"); //// Process_Start(ADC_CHECKMS,"charge_uppin_pcs",charge_uppin_pcs); // } // pair_line=CHARGE; // } // else if((ADC_value>=CONN_MIN_ADC)&&(ADC_value<=CONN_MAX_ADC)&&(mFlash.isHost==0)) // { // PAIR_CHARGERPIN_PRINT(" CONN_ADC %d \n",pair_line); // connect: // if(pair_line!=CONNECT_NO_CHARGE) // { // PAIR_CHARGERPIN_PRINT(" Process_SetHoldOn(adc_check,1); ms %d\n",TIME_GetTicks()); // // if(mFlash.isHost)Process_Start(ADC_CHECKMS,"adc_check",adc_check); // // Process_UpdatePeroid(adc_check,10); // Process_SetHoldOn(adc_check,1); // overtime=TIME_GetTicks(); // pair_start_pcs(); // // if(mFlash.isHost) // { // status=2; // nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_PULLUP); // delay_pair_count=TIME_GetTicks(); // PAIR_CHARGERPIN_PRINT(" SEND PAIR TAG HIGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH; %d \n",TIME_GetTicks()); // } // else // { // status=5; // TIME_Regist(chargerpin_one_ms_pcs); // one_ms_status = 0; // } // } // pair_line=CONNECT_NO_CHARGE; // } // else // { // if(mFlash.isHost) // { // if((ADC_value<=DISCON_L_MAX_ADC)&&(ADC_value>=DISCON_L_MIN_ADC)) // { // PAIR_CHARGERPIN_PRINT("L DISCON_L_ADC \n"); // pair_line=DISCONNECT_CHARGE; // } // else if((ADC_value<=CON_L_MAX_ADC)&&(ADC_value>=CON_L_MIN_ADC) && !MT_GetState()) // { // PAIR_CHARGERPIN_PRINT("L CON_L_MAX_ADC \n"); // goto connect; // } // } // else // { // if(ADC_value<=DISCON_R_MAX_ADC) // { // PAIR_CHARGERPIN_PRINT("R DISCON_R_MAX_ADC \n"); // pair_line=DISCONNECT_CHARGE; // } // } // } // break; // case 2:// // if(TIME_GetTicks()- delay_pair_count > ADC_CHECKMS) // { // TIME_Regist(chargerpin_one_ms_pcs); // one_ms_status = 0; // status=3; // PAIR_CHARGERPIN_PRINT(" TIME_Regist(chargerpin_one_ms_pcs); %d \n",TIME_GetTicks()); // } // break; // case 3: // if(TIME_GetTicks()- delay_pair_count > DELAY_PAIR_COUNT) // { // nrf_gpio_pin_set(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT(" SEND PAIR TAG HIG; %d \n",TIME_GetTicks()); // status=4; // } // break; // case 4: // if(TIME_GetTicks()- delay_pair_count>(DELAY_PAIR_COUNT+100)) // { // nrf_gpio_pin_clear(PIN_CHARGING); // PAIR_CHARGERPIN_PRINT(" SEND PAIR TAG LOW; %d \n",TIME_GetTicks()); // status=5; // } // break; // case 5: // if(writefig==1) // { // app_pair_chargerpin_pcs(); // TIME_UnRegist(chargerpin_one_ms_pcs); // status=0; //// MT_Run(500); // PAIR_CHARGERPIN_PRINT(" ---------------------------PAIR SUCESS------------- \n"); // } // if(TIME_GetTicks()-overtime > DELAY_LEDON+ADC_CHECKMS + DELAY_PAIR_COUNT + 100 + 300) // { // TIME_UnRegist(chargerpin_one_ms_pcs); // status=0; // PAIR_CHARGERPIN_PRINT(" ---------------------------PAIR OVER TIME %d------------- \n",TIME_GetTicks()); // } // break; // } //} //void write_on(void) //{ // LED_Stop(LED_PAIR); // LED_Start(LED_PAIR,COLOR_WHITE); // PAIR_CHARGERPIN_PRINT(" --------------------------LED_Start(LED_PAIR,COLOR_WHITE)------------- \n"); //} //PAIR_START_REGISTER(write_on); //static volatile uint32_t adctim =0; ////void app_adc_test(void){ //// int16_t adc =0; //// uint8_t state =0; //// uint32_t errcode = ADC_ReadChargePin(PIN_CHARGING_CHANNEL); //// if(errcode==0){ //// Process_SetHoldOn(app_adc_test,1); //// } //// DEBUG_LOG(">>>>> app_adc_test:%d\r\n",errcode); //// state = bsp_Get_ChargePinADC(&adc); //// if(state){ //// Process_SetHoldOn(app_adc_test,0); //// nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_NOPULL); //// DEBUG_LOG(">>>>> ReadAdc:%d\r\n",adc); //// } ////} ////void ReadAdc_timcallback(void* t){ //// //// int16_t adc =0; //// uint8_t state =0; //// static volatile uint8_t temp =0; //// if(0 == temp){temp =1; //// nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_PULLUP); //// adctim = TIME_GetTicks(); //// Process_SetHoldOn(app_adc_test,1); //// } //// else if(TIME_GetTicks() - adctim >= 3){adctim = TIME_GetTicks(); //// uint32_t errcode = ADC_ReadChargePin(PIN_CHARGING_CHANNEL); //// if(errcode){ //// temp =0; //// TIME_Regist(ReadAdc_timcallback); //// nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_NOPULL); //// DEBUG_LOG(">>>>> ReadAdc:%d\r\n",adc); //// } //// } ////} //static volatile uint8_t temp =0; //void app_adc_test(void){ // nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_PULLUP); // temp =0; // adctim = TIME_GetTicks(); // Process_SetHoldOn(app_adc_test,1); //} //void ReadAdc_timcallback(void* t){ // // int16_t adc =0; // uint8_t state =0; // // if(0 == temp){ // if(TIME_GetTicks() - adctim >= 3){ // uint32_t errcode = ADC_ReadChargePin(PIN_CHARGING_CHANNEL); // if(ADC_OP_SUCCESS == errcode){temp =1; // } // } // } // else if(temp ==1){ // state = bsp_Get_ChargePinADC(&adc); // if(state){temp =2; // Process_SetHoldOn(app_adc_test,0); // nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_NOPULL); // DEBUG_LOG(">>>>> ReadAdc:%d\r\n",adc); // } // } // //} //void app_pair_chargerpin_Init(void) //{ // Process_Start(ADC_CHECKMS,"adc_check",adc_check); //// Process_Start(1000,"app_adc_test",app_adc_test); //// TIME_Regist(ReadAdc_timcallback); //// ADC_Disable(); //// ADC_SetPinChannel(PIN_CHARGING,PIN_CHARGING_CHANNEL,NRF_GPIO_PIN_NOPULL); //// ADC_Initialize(); //} #include "usr_config.h" #include "bsp_time.h" #include "system.h" #include "nrf_gpio.h" #include "app_charge.h" #include "app_flash.h" #include "ble_comm.h" #include "bsp_adc.h" #include "app_pair_chargerpin.h" #include "hal_led.h" #include "hal_charge.h" #include "hal_mt.h" extern void adc_check(void); //发送协议 //Host MAC[0] MAC[1] MAC[2]>>>>>> Client //Client MAC[3] MAC[4] MAC[5]>>>>>> Host #define HOST_PEAR 1 #define PIN_LED_RUN 2 #define DATA_LENGTH 4 #define BITWIDTH 30 #define LOW_BIT_DELAY 15 #define DELAY_SEND 100 #define DELAY_REPLY 100 #define DELAY_CHECK 100 #define DELAY_LEDON (BITWIDTH*(8*DATA_LENGTH+3)*2+DELAY_SEND+DELAY_REPLY+DELAY_CHECK+5*BITWIDTH) #define LEDON_KEEP 100 static uint8_t leddisplay_count=0; unsigned static char rxbuf[DATA_LENGTH]; unsigned static char txbuf[DATA_LENGTH]; __IO static char writefig=0; unsigned static char savebuf[DATA_LENGTH]; static char one_ms_status = 0; static void chargerpin_one_ms_pcs(void* t) { unsigned int ms = *(unsigned int*)t; static unsigned int bit_width = 0; static unsigned int now_bit = 0; static unsigned int delay_send_count = 0; static unsigned int delay_reply_count = 0; static unsigned int delay_check_count = 0; static unsigned int delay_ledon_count = 0; static int bitindex = 0; static int bytesindes = 0; static int value = 0; static int txrxcount = 0; static char lowbitdelay=0; switch (one_ms_status) { case 0://init bit_width = 0; now_bit = 0; delay_send_count = 0; delay_reply_count = 0; delay_check_count = 0; delay_ledon_count = 0; bitindex = 0; bytesindes = 0; value = 0; txrxcount = 0; one_ms_status = 0; lowbitdelay=0; nrf_gpio_cfg( PIN_CHARGING, NRF_GPIO_PIN_DIR_OUTPUT, NRF_GPIO_PIN_INPUT_CONNECT, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_D0H1, NRF_GPIO_PIN_NOSENSE); nrf_gpio_cfg_watcher(PIN_CHARGING); one_ms_status = 1; nrf_gpio_pin_clear(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("nrf_gpio_cfg_watcher(PIN_CHARGING); clear.%d\r\n", ms); break; case 1: if (now_bit == nrf_gpio_pin_read(PIN_CHARGING)) { bit_width++; } else { //由高电平切换到低电平,下降信号 if (now_bit == 1) { now_bit = 0; if ((bit_width > 1.5 * BITWIDTH - LOW_BIT_DELAY/3) && (bit_width < 1.5 * BITWIDTH + LOW_BIT_DELAY/3)) { one_ms_status = 3; txrxcount = 1.5 * BITWIDTH; value = 30; if (mFlash.isHost == 0) { delay_ledon_count = 1.5 * BITWIDTH + DELAY_SEND; PAIR_CHARGERPIN_PRINT("delay_ledon_count = 1.5 * BITWIDTH + DELAY_SEND.%d\r\n", txrxcount); } else { delay_ledon_count = 2.5 * BITWIDTH + DELAY_SEND + BITWIDTH * 8 * DATA_LENGTH + 1.5 * BITWIDTH + DELAY_REPLY; PAIR_CHARGERPIN_PRINT("delay_ledon_count = 2.5 * BITWIDTH + DELAY_SEND + BITWIDTH*8*DATA_LENGTH + 1.5 * BITWIDTH + DELAY_REPLY .%d\r\n", txrxcount); } PAIR_CHARGERPIN_PRINT("-----------------------RX MODE start .%d\r\n", bit_width); break; } else { if (mFlash.isHost) { delay_send_count = 1; //左边鞋发送数据 } PAIR_CHARGERPIN_INFO("EXTI CHARGEING MOID.%d bit_width %d \r\n", ms,bit_width); } } else { now_bit = 1; delay_send_count = 0; delay_reply_count = 0; delay_check_count = 0; nrf_gpio_pin_write(PIN_LED_RUN, 0); delay_ledon_count = 0; PAIR_CHARGERPIN_PRINT("delay_ledon_count = 0 .%d\r\n", txrxcount); PAIR_CHARGERPIN_INFO("INTO CHARGEING MOID.%d\r\n", ms); } bit_width = 0; } if (delay_send_count != 0) { delay_send_count++; } if (delay_send_count > DELAY_SEND) { unsigned char macbuff[32]; delay_send_count = 0; PAIR_CHARGERPIN_PRINT("BEGIN send MAC.%d\r\n", ms); Get_MACaddr(macbuff); macbuff[DATA_LENGTH - 1] = 0; for (int i = 0; i < DATA_LENGTH - 1; i++) { macbuff[DATA_LENGTH - 1] += macbuff[i]; } memcpy(txbuf, macbuff, DATA_LENGTH); PAIR_CHARGERPIN_PRINT("host_mac send.%d\r\n", ms); one_ms_status = 2; txrxcount = 0; for (int i = 0; i < DATA_LENGTH; i++) { PAIR_CHARGERPIN_PRINT("txbuf.%x\r\n", txbuf[i]); } break; } if (delay_reply_count != 0) { delay_reply_count++; } if (delay_reply_count > DELAY_REPLY) { unsigned char macbuff[16]; delay_reply_count = 0; PAIR_CHARGERPIN_PRINT("BEGIN send MAC.%d\r\n", ms); Get_MACaddr(macbuff); memcpy(txbuf, &macbuff[3], DATA_LENGTH); txbuf[DATA_LENGTH - 1] = 0; for (int i = 0; i < DATA_LENGTH - 1; i++) { txbuf[DATA_LENGTH - 1] += txbuf[i]; } PAIR_CHARGERPIN_PRINT("host_mac send.%d\r\n", ms); one_ms_status = 2; txrxcount = 0; for (int i = 0; i < DATA_LENGTH; i++) { PAIR_CHARGERPIN_PRINT("txbuf.%x\r\n", txbuf[i]); } break; } if (delay_check_count != 0) { delay_check_count++; } if (delay_check_count > DELAY_CHECK) { delay_check_count = 0; one_ms_status = 4; txrxcount = 0; PAIR_CHARGERPIN_PRINT("CHECK start.%d\r\n", ms); break; } else if (delay_check_count > 0) { if (now_bit > 0) { delay_check_count = 0; PAIR_CHARGERPIN_PRINT("CANCEL CHECK.%d\r\n", ms); } } break; case 2://tx { lowbitdelay++; static char send_interrupt = 0; if ((now_bit == 0) && (nrf_gpio_pin_read(PIN_CHARGING)) && (lowbitdelay>LOW_BIT_DELAY)) { if (mFlash.isHost) { one_ms_status = 1; nrf_gpio_pin_clear(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); delay_ledon_count = 0; PAIR_CHARGERPIN_PRINT("delay_ledon_count1 = 0;\r\n", txrxcount); PAIR_CHARGERPIN_PRINT("EXTI SEND MODE.CAN NOT SET LOW %d\r\n", txrxcount); send_interrupt = 0; break; } else { nrf_gpio_pin_clear(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); send_interrupt = 1; } } if ((txrxcount == 0) && (send_interrupt == 0)) { nrf_gpio_pin_set(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("set.%d\r\n", ms); now_bit = 1; } if ((txrxcount == 1.5 * BITWIDTH) && (send_interrupt == 0)) { nrf_gpio_pin_clear(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); now_bit = 0; lowbitdelay=0; } if ((txrxcount >= (int)(2.5 * BITWIDTH) && (txrxcount - (int)(2.5 * BITWIDTH)) % BITWIDTH == 0) && (send_interrupt == 0)) { bytesindes = ((txrxcount - (int)(2.5 * BITWIDTH)) / BITWIDTH) / 8; bitindex = 7 - ((txrxcount - (int)(2.5 * BITWIDTH)) / BITWIDTH) % 8; nrf_gpio_pin_write(PIN_CHARGING, (txbuf[bytesindes] >> bitindex) & 0x01); lowbitdelay=0; PAIR_CHARGERPIN_PRINT("write.%d %d\r\n", ((txbuf[bytesindes] >> bitindex) & 0x01), ms); now_bit = (txbuf[bytesindes] >> bitindex) & 0x01; PAIR_CHARGERPIN_PRINT("%d %d %d %d %x\r\n", (txrxcount - (int)(2.5 * BITWIDTH)) / BITWIDTH , bytesindes , bitindex , (txbuf[bytesindes] >> bitindex) & 0x01 , txbuf[bytesindes] ); } if (send_interrupt) { if (nrf_gpio_pin_read(PIN_CHARGING) == 0) { send_interrupt = 0; delay_ledon_count = DELAY_SEND; PAIR_CHARGERPIN_PRINT("delay_ledon_count = DELAY_SEND;.%d\r\n", txrxcount); PAIR_CHARGERPIN_PRINT("RX SEND MODE MAC START.%d\r\n", txrxcount); txrxcount = 0; break; } } if (txrxcount == BITWIDTH * (8 * DATA_LENGTH + 2.5) - 1) { nrf_gpio_pin_clear(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); if (mFlash.isHost == 0) { delay_check_count = 1; } } if(delay_check_count!=0)delay_check_count++; if (txrxcount >= BITWIDTH * (8 * DATA_LENGTH + 2.5) - 1 + LOW_BIT_DELAY) { one_ms_status = 1; send_interrupt = 0; now_bit = 0; bit_width = 0; PAIR_CHARGERPIN_PRINT("SEDN DONE .%d pin one_ms_status %d\r\n", ms,nrf_gpio_pin_read(PIN_CHARGING)); break; } txrxcount++; } break; case 3://rx if (now_bit == nrf_gpio_pin_read(PIN_CHARGING)) { bit_width++; } else { if (now_bit == 1) { now_bit = 0; if ((bit_width > 1.5 * BITWIDTH - 3) && (bit_width < 1.8 * BITWIDTH + 3)) { txrxcount = 1.5 * BITWIDTH; value = 30; delay_ledon_count = DELAY_SEND + 1.5 * BITWIDTH; PAIR_CHARGERPIN_PRINT("DELAY_SEND + 1.5 * BITWIDTHt .%d\r\n", txrxcount); PAIR_CHARGERPIN_PRINT("RX MODE restart .%d\r\n", ms); } } else { now_bit = 1; } bit_width = 0; } if (txrxcount >= (int)(3.5 * BITWIDTH) && (txrxcount - (int)(3.5 * BITWIDTH)) % BITWIDTH == 0) { bytesindes = ((txrxcount - (int)(3.5 * BITWIDTH)) / BITWIDTH) / 8; bitindex = 7 - ((txrxcount - (int)(3.5 * BITWIDTH)) / BITWIDTH) % 8; if (value > 0) { rxbuf[bytesindes] |= 0x01 << bitindex; } else { rxbuf[bytesindes] &= ~(0x01 << bitindex); } PAIR_CHARGERPIN_PRINT("%d %d %d %d %x\r\n", txrxcount , bytesindes , bitindex , value , rxbuf[bytesindes] ); value = 0; nrf_gpio_pin_toggle(PIN_LED_RUN); } else { if (now_bit) { value++; } else { value--; } } if (txrxcount >= BITWIDTH * (8 * DATA_LENGTH + 2.5)) { unsigned char dataerrcheck = 0; unsigned char crc = 0; one_ms_status = 1; PAIR_CHARGERPIN_PRINT("RECEVIC DONE .%d\r\n", txrxcount); nrf_gpio_pin_clear(PIN_LED_RUN); PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); for (int i = 0; i < DATA_LENGTH - 1; i++) { crc += rxbuf[i]; } for (int i = 0; i < DATA_LENGTH - 1; i++) { if (rxbuf[i] == 0) { dataerrcheck++; } } if (dataerrcheck == DATA_LENGTH - 1) { PAIR_CHARGERPIN_PRINT("CRC ERROR ALL 0x00.%x\r\n", crc); delay_ledon_count = 0; PAIR_CHARGERPIN_PRINT("delay_ledon_count 2= 0;\r\n", txrxcount); break; } dataerrcheck = 0; for (int i = 0; i < DATA_LENGTH - 1; i++) { if (rxbuf[i] == 0xff) { dataerrcheck++; } } if (dataerrcheck == DATA_LENGTH - 1) { PAIR_CHARGERPIN_PRINT("CRC ERROR ALL 0xFF.%x\r\n", crc); delay_ledon_count = 0; PAIR_CHARGERPIN_PRINT("delay_ledon_count 3= 0;\r\n", txrxcount); break; } if (crc == rxbuf[DATA_LENGTH - 1]) { if (mFlash.isHost) { delay_check_count = 1; //延时校验计数器 } else { delay_reply_count = 1; //延时回复计数器 } PAIR_CHARGERPIN_PRINT("---------------CRC SUCCESS .%x----------------\r\n", crc); } else { PAIR_CHARGERPIN_PRINT("CRC ERROR .%x\r\n", crc); delay_ledon_count = 0; PAIR_CHARGERPIN_PRINT("delay_ledon_count 4= 0;\r\n", txrxcount); } for (int i = 0; i < DATA_LENGTH; i++) { PAIR_CHARGERPIN_PRINT("rxbuf[%d].%x\r\n",i, rxbuf[i]); } } txrxcount++; break; case 4: if (nrf_gpio_pin_read(PIN_CHARGING)) { value++; } else { value--; } if (mFlash.isHost) { if (txrxcount == 0) { value = 0; nrf_gpio_pin_set(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("set.%d\r\n", ms); } if (txrxcount == 3 * BITWIDTH) { nrf_gpio_pin_clear(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("clear.%d\r\n", delay_ledon_count); } if (txrxcount >= 3 * BITWIDTH + LOW_BIT_DELAY) { value = 0; one_ms_status = 1; now_bit = 0; bit_width = 0; } } else { if (txrxcount == 0) { value = 0; } if (txrxcount > 3 * BITWIDTH) { if (value < 2 * BITWIDTH) { PAIR_CHARGERPIN_PRINT("CHECK ERROR .%d\r\n", txrxcount); delay_ledon_count = 0; PAIR_CHARGERPIN_PRINT("delay_ledon_count 5= 0;\r\n", txrxcount); } else { PAIR_CHARGERPIN_PRINT("CHECK DONE .%d\r\n", txrxcount); } value = 0; one_ms_status = 1; nrf_gpio_pin_clear(PIN_CHARGING); PAIR_CHARGERPIN_PRINT("clear.%d\r\n", ms); now_bit = 1; bit_width = 0; } } txrxcount++; break; } if (delay_ledon_count != 0) { delay_ledon_count++; } if (delay_ledon_count == DELAY_LEDON) { PAIR_CHARGERPIN_PRINT("LEDCOPEN.%d\r\n", ms); memcpy(savebuf,rxbuf,DATA_LENGTH-1); writefig=1; } if ((delay_ledon_count > DELAY_LEDON ) && (delay_ledon_count - DELAY_LEDON == LEDON_KEEP)) { delay_ledon_count = 0; PAIR_CHARGERPIN_PRINT("delay_ledon_count 6= 0;\r\n", txrxcount); PAIR_CHARGERPIN_PRINT("LEDCLOSE.%d\r\n", ms); } } void pair_led_pcs(void) { leddisplay_count++; if(leddisplay_count%2==0) { LED_Start(LED_PAIR,COLOR_BLACK); } else { LED_Start(LED_PAIR,COLOR_WHITE); } if(leddisplay_count>20) { leddisplay_count=0; LED_Stop(LED_PAIR); Process_SetHoldOn(pair_led_pcs,0); Process_Stop(pair_led_pcs); } } void stop_pair_led(void) { if(leddisplay_count==0)return; LED_Start(LED_PAIR,COLOR_BLACK); Process_SetHoldOn(pair_led_pcs,0); Process_Stop(pair_led_pcs); leddisplay_count=0; } PAIR_START_REGISTER(stop_pair_led); void mtrun(void) { MT_Run(200); } PAIR_START_REGISTER(mtrun); //写配对相关的flish static int pair_writeflish(unsigned char* macAddr_L, unsigned char* macAddr_R) { uint8_t offest =0; if(mFlash.isHost){offest =3;} if (memcmp(macAddr_R, mFlash.mClient.macAddr+offest, 3) != 0) { goto writein; } if (mFlash.mClient.isConfig != 'C') { goto writein; } PAIR_CHARGERPIN_PRINT("mFlash.mClient.isConfig:%X\n", mFlash.mClient.isConfig); PAIR_CHARGERPIN_PRINT("mFlash.mClient.macAddr:%02X %02X %02X\n", mFlash.mClient.macAddr[0], mFlash.mClient.macAddr[1], mFlash.mClient.macAddr[2]); PAIR_CHARGERPIN_PRINT("mFlash.macHost:%02X %02X %02X\n", mFlash.macHost[0], mFlash.macHost[1], mFlash.macHost[2]); return 0; writein: mFlash.mClient.isConfig = 'C'; uint8_t i=0; for (i = 0; i < 6; i++){mFlash.macHost[i] = macAddr_L[i];} for (i = 0; i < 3; i++) mFlash.mClient.macAddr[i+offest] = macAddr_R[i]; //从机自身mac地址 //保存数据到备份区域里面 for( i=0; i=3) { PAIR_CHARGERPIN_PRINT("tim_read_cb 3ms \n",mFlash.isHost); if(ADC_OP_SUCCESS!=ADC_Read_CallBack_Once(PIN_CHARGING_CHANNEL,adc_cab)) { adc_check(); PAIR_CHARGERPIN_PRINT("adc_check init \n",mFlash.isHost); } Process_Stop(null_pcs); TIME_UnRegist(tim_read_cb); } } static pair_line_t pair_line = DISCONNECT_CHARGE; //#include "queue.h" //extern queue_t Delegate; static short Left_adc=0; char pingup=0; void Delegate_up_pin(void *t) { unsigned int count=TIME_GetTicks()-pulluppcs_timer; if(count<3) { return; } if(count==3) { uint32_t errcode = ADC_ReadChargePin(PIN_CHARGING_CHANNEL); } else if((count>3)&&(count<300)) { unsigned char state = bsp_Get_ChargePinADC(&Left_adc); if(state){ TIME_UnRegist(Delegate_up_pin); Process_Stop(null_pcs); PAIR_CHARGERPIN_PRINT("Delegate_up_pin %d\n",mFlash.isHost); adc_check(); } } else { PAIR_CHARGERPIN_PRINT("------------------------------adc overtime error -------------------\n",mFlash.isHost); } } extern short ChargeADC_value; void adc_check(void) { static unsigned char status=0; short ADC_value=0; static unsigned int delay_pair_count=0; static unsigned int overtime=0; static unsigned char ishost; switch(status) { case 0: ishost=mFlash.isHost; ADC_Disable(); ADC_SetPinChannel(PIN_CHARGING,PIN_CHARGING_CHANNEL,NRF_GPIO_PIN_NOPULL); ADC_Initialize(); Process_UpdatePeroid(adc_check,ADC_CHECKMS); Process_SetHoldOn(adc_check,0); nrf_gpio_pin_write(PIN_LED_RUN, 0); pair_done_pcs(); status=1; break; case 1: if(ishost!=mFlash.isHost) { status=0; PAIR_CHARGERPIN_PRINT("mFlash.isHost change %d\n",mFlash.isHost); } if(mFlash.isHost) { if(pingup==0) { pingup=1; nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_PULLUP); pulluppcs_timer = TIME_GetTicks(); Process_Start(0,"null_pcs",null_pcs); Process_SetHoldOn(null_pcs,1); TIME_Regist(Delegate_up_pin); return; } else { ADC_value=Left_adc; nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_NOPULL); pingup=0; } } if(mFlash.isHost==0){ if(ADC_OP_SUCCESS!=ADC_Read(PIN_CHARGING_CHANNEL,&ADC_value)) { PAIR_CHARGERPIN_PRINT("ADC_Read ERROR %d\n",mFlash.isHost); } } PAIR_CHARGERPIN_PRINT( "ADC ( %d ):isHost %d pair_line %d\n", ADC_value,mFlash.isHost,pair_line); ChargeADC_value = ADC_value; if((ADC_value=CHARGE_ADC) { PAIR_CHARGERPIN_PRINT(" CHARGE_ADC \n"); if((pair_line != CHARGE)&&(mFlash.isHost)) { PAIR_CHARGERPIN_PRINT("--------------------------------------------------------------------INTO CHARGE_ADC \n"); // Process_Start(ADC_CHECKMS,"charge_uppin_pcs",charge_uppin_pcs); } pair_line=CHARGE; } else if((ADC_value>=CONN_MIN_ADC)&&(ADC_value<=CONN_MAX_ADC)&&(mFlash.isHost==0)) { PAIR_CHARGERPIN_PRINT(" CONN_ADC %d \n",pair_line); connect: if(pair_line!=CONNECT_NO_CHARGE) { PAIR_CHARGERPIN_PRINT(" Process_SetHoldOn(adc_check,1); ms %d\n",TIME_GetTicks()); if(mFlash.isHost)Process_Start(ADC_CHECKMS,"adc_check",adc_check); Process_UpdatePeroid(adc_check,10); Process_SetHoldOn(adc_check,1); overtime=TIME_GetTicks(); pair_start_pcs(); if(mFlash.isHost) { status=2; nrf_gpio_cfg_input(PIN_CHARGING,NRF_GPIO_PIN_PULLUP); delay_pair_count=TIME_GetTicks(); PAIR_CHARGERPIN_PRINT(" SEND PAIR TAG HIGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH; %d \n",TIME_GetTicks()); } else { status=5; TIME_Regist(chargerpin_one_ms_pcs); one_ms_status = 0; } } pair_line=CONNECT_NO_CHARGE; } else { if(mFlash.isHost) { if((ADC_value<=DISCON_L_MAX_ADC)&&(ADC_value>=DISCON_L_MIN_ADC)) { PAIR_CHARGERPIN_PRINT("L DISCON_L_ADC \n"); pair_line=DISCONNECT_CHARGE; } else if((ADC_value<=CON_L_MAX_ADC)&&(ADC_value>=CON_L_MIN_ADC)) { PAIR_CHARGERPIN_PRINT("L CON_L_MAX_ADC \n"); goto connect; } } else { if(ADC_value<=DISCON_R_MAX_ADC) { PAIR_CHARGERPIN_PRINT("R DISCON_R_MAX_ADC \n"); pair_line=DISCONNECT_CHARGE; } } } break; case 2:// if(TIME_GetTicks()- delay_pair_count > ADC_CHECKMS) { TIME_Regist(chargerpin_one_ms_pcs); one_ms_status = 0; status=3; PAIR_CHARGERPIN_PRINT(" TIME_Regist(chargerpin_one_ms_pcs); %d \n",TIME_GetTicks()); } break; case 3: if(TIME_GetTicks()- delay_pair_count > DELAY_PAIR_COUNT) { nrf_gpio_pin_set(PIN_CHARGING); PAIR_CHARGERPIN_PRINT(" SEND PAIR TAG HIG; %d \n",TIME_GetTicks()); status=4; } break; case 4: if(TIME_GetTicks()- delay_pair_count>(DELAY_PAIR_COUNT+100)) { nrf_gpio_pin_clear(PIN_CHARGING); PAIR_CHARGERPIN_PRINT(" SEND PAIR TAG LOW; %d \n",TIME_GetTicks()); status=5; } break; case 5: if(writefig==1) { app_pair_chargerpin_pcs(); TIME_UnRegist(chargerpin_one_ms_pcs); status=0; MT_Run(500); PAIR_CHARGERPIN_PRINT(" ---------------------------PAIR SUCESS------------- \n"); } if(TIME_GetTicks()-overtime > DELAY_LEDON+ADC_CHECKMS + DELAY_PAIR_COUNT + 100 + 300) { LED_Stop(LED_PAIR); TIME_UnRegist(chargerpin_one_ms_pcs); status=0; PAIR_CHARGERPIN_PRINT(" ---------------------------PAIR OVER TIME %d------------- \n",TIME_GetTicks()); } break; } } void write_on(void) { LED_Start(LED_PAIR,COLOR_WHITE); } PAIR_START_REGISTER(write_on); void app_pair_chargerpin_Init(void) { Process_Start(ADC_CHECKMS,"adc_check",adc_check); }