#include #include "main.h" #include "Bluecell_operate.h" #include "PE43711.h" extern volatile uint32_t LedTimerCnt; extern void PE43711_atten_ctrl(PE43711_st ATT ,uint8_t data); extern void Uart1_Data_Send(uint8_t* data,uint8_t size); uint8_t Alarm_Status[MAX_ALARM_Len] = {0,}; //uint8_t data123[10000]; DET_UL DET_UL1; DET_UL DET_UL2; DET_UL DET_UL3; DET_UL DET_UL4; DET_DL DET_DL1; DET_DL DET_DL2; DET_DL DET_DL3; DET_DL DET_DL4; uint8_t ResultData[1024] = {0,}; void Boot_LED_Toggle(void){ if(LedTimerCnt > 500){ HAL_GPIO_TogglePin(GPIOG,GPIO_PIN_14); LedTimerCnt = 0; // printf("LED OF OFF\r\n"); } } uint8_t* MBIC_HeaderDataSetting(uint8_t* data){ ResultData[MBIC_PREAMBLE_0] = MBIC_PREAMBLE0; ResultData[MBIC_PREAMBLE_1] = MBIC_PREAMBLE1; ResultData[MBIC_PREAMBLE_2] = MBIC_PREAMBLE2; ResultData[MBIC_PREAMBLE_3] = MBIC_PREAMBLE3; ResultData[MBIC_SUBUID_0] = MBIC_SUBUID0; ResultData[MBIC_SUBUID_1] = MBIC_SUBUID1; ResultData[MBIC_RCODE_0] = data[MBIC_RCODE_0]; ResultData[MBIC_TRID_0] = data[MBIC_TRID_0]; ResultData[MBIC_TRID_1] = data[MBIC_TRID_1]; ResultData[MBIC_SEQSUM_0] = data[MBIC_SEQSUM_0]; ResultData[MBIC_TTL_0] = data[MBIC_TTL_0]; ResultData[MBIC_TIME_0] = data[MBIC_TIME_0]; ResultData[MBIC_TIME_1] = data[MBIC_TIME_1]; ResultData[MBIC_TIME_2] = data[MBIC_TIME_2]; ResultData[MBIC_TIME_3] = data[MBIC_TIME_3]; ResultData[MBIC_TIME_4] = data[MBIC_TIME_4]; ResultData[MBIC_TIME_5] = data[MBIC_TIME_5]; return ResultData; } typedef enum{ BLUECELL_HEADER, BLUECELL_TYPE, BLUECELL_LENGTH, BLUECELL_CRCINDEX, BLUECELL_DATA, }BLUECELLProt_st; extern ALL_PE43711_st ALL_ATT; BLUESTATUS_st bluecell_datastatus; bool Bluecell_Operate(uint8_t* data){ uint8_t datatype = data[BLUECELL_TYPE]; uint16_t tmp_h = 0,tmp_l = 0; double ret = 0 ,tmp = 0.1; uint8_t val = 0; switch(datatype){ case ATTDL1 : printf("Function : %s Line %d \r\n",__func__,__LINE__); tmp_h = data[BLUECELL_DATA]; tmp_l = data[BLUECELL_DATA + 1]; ret += ((tmp_h << 8) & 0xFF00); ret += (tmp_l & 0x00FF); ret /= 100; val = PE43711_DataToHexConvert(ret); PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val); printf("ret : %f ,tmp %f \r\n",ret,tmp ); break; case ATT_DL1_PATH_OFF : HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_DL1_PATH_ON : HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATTUL1 : printf("Function : %s Line %d \r\n",__func__,__LINE__); tmp_h = data[BLUECELL_DATA]; tmp_l = data[BLUECELL_DATA + 1]; ret += ((tmp_h << 8) & 0xFF00); ret += (tmp_l & 0x00FF); ret /= 100; val = PE43711_DataToHexConvert(ret); PE43711_atten_ctrl(ALL_ATT.ATT_UL1,val); printf("tmp_h : %x tmp_l : %x , ret : %x ,%f ,tmp %f \r\n",tmp_h,tmp_l,ret,tmp ); break; case ATT_UL1_PATH_OFF : HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_UL1_PATH_ON : HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_SelfTest1_OFF : HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_SelfTest1_ON : HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATTDL2 : printf("Function : %s Line %d \r\n",__func__,__LINE__); tmp_h = data[BLUECELL_DATA]; tmp_l = data[BLUECELL_DATA + 1]; ret += ((tmp_h << 8) & 0xFF00); ret += (tmp_l & 0x00FF); ret /= 100; val = PE43711_DataToHexConvert(ret); PE43711_atten_ctrl(ALL_ATT.ATT_DL2,val); printf("tmp_h : %x tmp_l : %x , ret : %x ,%f ,tmp %f \r\n",tmp_h,tmp_l,ret,tmp ); break; case ATT_DL2_PATH_OFF : HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_DL2_PATH_ON : HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATTUL2 : printf("Function : %s Line %d \r\n",__func__,__LINE__); tmp_h = data[BLUECELL_DATA]; tmp_l = data[BLUECELL_DATA + 1]; ret += ((tmp_h << 8) & 0xFF00); ret += (tmp_l & 0x00FF); ret /= 100; val = PE43711_DataToHexConvert(ret); PE43711_atten_ctrl(ALL_ATT.ATT_UL2,val); printf("tmp_h : %x tmp_l : %x , ret : %x ,%f ,tmp %f \r\n",tmp_h,tmp_l,ret,tmp ); break; case ATT_UL2_PATH_OFF : HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_UL2_PATH_ON : HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_SelfTest2_OFF : HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_SelfTest2_ON : HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATTDL3 : printf("Function : %s Line %d \r\n",__func__,__LINE__); tmp_h = data[BLUECELL_DATA]; tmp_l = data[BLUECELL_DATA + 1]; ret += ((tmp_h << 8) & 0xFF00); ret += (tmp_l & 0x00FF); ret /= 100; val = PE43711_DataToHexConvert(ret); PE43711_atten_ctrl(ALL_ATT.ATT_DL3,val); printf("tmp_h : %x tmp_l : %x , ret : %x ,%f ,tmp %f \r\n",tmp_h,tmp_l,ret,tmp ); break; case ATT_DL3_PATH_OFF : HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_DL3_PATH_ON : HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATTUL3 : printf("Function : %s Line %d \r\n",__func__,__LINE__); tmp_h = data[BLUECELL_DATA]; tmp_l = data[BLUECELL_DATA + 1]; ret += ((tmp_h << 8) & 0xFF00); ret += (tmp_l & 0x00FF); ret /= 100; val = PE43711_DataToHexConvert(ret); PE43711_atten_ctrl(ALL_ATT.ATT_UL3,val); printf("tmp_h : %x tmp_l : %x , ret : %x ,%f ,tmp %f \r\n",tmp_h,tmp_l,ret,tmp ); break; case ATT_UL3_PATH_OFF : HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_UL3_PATH_ON : HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_SelfTest3_OFF : HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_SelfTest3_ON : HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATTDL4 : printf("Function : %s Line %d \r\n",__func__,__LINE__); tmp_h = data[BLUECELL_DATA]; tmp_l = data[BLUECELL_DATA + 1]; ret += ((tmp_h << 8) & 0xFF00); ret += (tmp_l & 0x00FF); ret /= 100; val = PE43711_DataToHexConvert(ret); PE43711_atten_ctrl(ALL_ATT.ATT_DL4,val); printf("tmp_h : %x tmp_l : %x , ret : %x ,%f ,tmp %f \r\n",tmp_h,tmp_l,ret,tmp ); break; case ATT_DL4_PATH_OFF : HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_DL4_PATH_ON : HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATTUL4 : printf("Function : %s Line %d \r\n",__func__,__LINE__); tmp_h = data[BLUECELL_DATA]; tmp_l = data[BLUECELL_DATA + 1]; ret += ((tmp_h << 8) & 0xFF00); ret += (tmp_l & 0x00FF); ret /= 100; val = PE43711_DataToHexConvert(ret); PE43711_atten_ctrl(ALL_ATT.ATT_UL4,val); printf("tmp_h : %x tmp_l : %x , ret : %x ,%f ,tmp %f \r\n",tmp_h,tmp_l,ret,tmp ); break; case ATT_UL4_PATH_OFF: HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_UL4_PATH_ON : HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_SelfTest4_OFF : HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case ATT_SelfTest4_ON : HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK printf("Function : %s Line %d \r\n",__func__,__LINE__); break; case Bluecell_StatusReq: DataStatusGet(); Uart1_Data_Send(&bluecell_datastatus, sizeof(bluecell_datastatus)); break; } return true; } void DataStatusGet(void){ bluecell_datastatus.bluecell_header = 0xbe; bluecell_datastatus.bluecell_type = Bluecell_StatusReq; bluecell_datastatus.bluecell_length = sizeof(bluecell_datastatus) - 1; bluecell_datastatus.bluecell_crcindex = 56; bluecell_datastatus.Selftest0 = HAL_GPIO_ReadPin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin); bluecell_datastatus.Selftest1 = HAL_GPIO_ReadPin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin); bluecell_datastatus.Selftest2 = HAL_GPIO_ReadPin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin); bluecell_datastatus.Selftest3 = HAL_GPIO_ReadPin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin); bluecell_datastatus.ATT_DL1_PATH = HAL_GPIO_ReadPin(PATH_EN_DL1_GPIO_Port,PATH_EN_UL1_Pin);//CLOCK; bluecell_datastatus.ATT_DL2_PATH = HAL_GPIO_ReadPin(PATH_EN_DL2_GPIO_Port,PATH_EN_UL2_Pin);//CLOCK; bluecell_datastatus.ATT_DL3_PATH = HAL_GPIO_ReadPin(PATH_EN_DL3_GPIO_Port,PATH_EN_UL3_Pin);//CLOCK; bluecell_datastatus.ATT_DL4_PATH = HAL_GPIO_ReadPin(PATH_EN_DL4_GPIO_Port,PATH_EN_UL4_Pin);//CLOCK; bluecell_datastatus.ATT_UL1_PATH = HAL_GPIO_ReadPin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin);//CLOCK; bluecell_datastatus.ATT_UL2_PATH = HAL_GPIO_ReadPin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin);//CLOCK; bluecell_datastatus.ATT_UL3_PATH = HAL_GPIO_ReadPin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin);//CLOCK; bluecell_datastatus.ATT_UL4_PATH = HAL_GPIO_ReadPin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin);//CLOCK; bluecell_datastatus.ATT_DL1_H ; bluecell_datastatus.ATT_DL1_L; bluecell_datastatus.ATT_DL2_H; bluecell_datastatus.ATT_DL2_L; bluecell_datastatus.ATT_DL3_H; bluecell_datastatus.ATT_DL3_L; bluecell_datastatus.ATT_DL4_H; bluecell_datastatus.ATT_DL4_L; bluecell_datastatus.ATT_UL1_H; bluecell_datastatus.ATT_UL1_L; bluecell_datastatus.ATT_UL2_H; bluecell_datastatus.ATT_UL2_L; bluecell_datastatus.ATT_UL3_H; bluecell_datastatus.ATT_UL3_L; bluecell_datastatus.ATT_UL4_H; bluecell_datastatus.ATT_UL4_L; bluecell_datastatus.DET_DL1_IN_H; bluecell_datastatus.DET_DL1_IN_L; bluecell_datastatus.DET_DL2_IN_H; bluecell_datastatus.DET_DL2_IN_L; bluecell_datastatus.DET_DL3_IN_H; bluecell_datastatus.DET_DL3_IN_L; bluecell_datastatus.DET_DL4_IN_H; bluecell_datastatus.DET_DL4_IN_L; bluecell_datastatus.DET_UL1_IN_H; bluecell_datastatus.DET_UL1_IN_L; bluecell_datastatus.DET_UL2_IN_H; bluecell_datastatus.DET_UL2_IN_L; bluecell_datastatus.DET_UL3_IN_H; bluecell_datastatus.DET_UL3_IN_L; bluecell_datastatus.DET_UL4_IN_H; bluecell_datastatus.DET_UL4_IN_L; bluecell_datastatus.DET_TEMP_H; bluecell_datastatus.DET_TEMP_L; bluecell_datastatus.ATT_AGC_ONOFF; bluecell_datastatus.ATT_ALC_ONOFF; bluecell_datastatus.ATT_AGC_H; bluecell_datastatus.ATT_AGC_L; bluecell_datastatus.ATT_ALC_H; bluecell_datastatus.ATT_ALC_L; } bool MBIC_Operate(uint8_t* data){ uint16_t datatype = 0; switch(datatype){ case Alarm_Bit_List: // �븣由� 鍮꾪듃 Uart1_Data_Send(&Alarm_Status[0],MAX_ALARM_Len); break; case Alarm_Mask: break; case Alarm_Test_Mode: break; case Alarm_Test_Dummy: break; case CPU_Version: break; case ModuleINFORMATION_null1: break; case CPU_Current_Bank: break; case CPU_Bank_Select_Reboot_by: break; case CPU_Bank1_Image_Version: break; case CPU_Bank1_Image_BuildTime: break; case CPU_Bank1_Image_Name: break; case CPU_Bank2_Image_Version: break; case CPU_Bank2_Image_BuildTime: break; case CPU_Bank2_Image_Name: break; case SW_Reset: break; case Factory_Set_Initialization: break; case Temperature: break; case Temperature_Offset: break; case Temp_High_Threshold: break; case Temp_High_Threshold_Default: break; case Temp_High_Alarm: break; case LED_TEST: break; case Node: break; case Type: break; case PCB_Version: break; case Serial_Number: break; case Manufacture: break; case Manufacture_Date: break; case ENVIRONMENT_INVENTORY_null1: printf("Function : %s .... Line : %d\r\n",__func__,__LINE__); break; case Freq_ID: break; case Carrier_ID: break; case Carrier_ON_OFF: break; } return true; }