Exemplo n.º 1
0
static void USER_FUNC lum_enterSearchFreqMode(ORIGIN_WAVE_DATA* pWaveDataInfo)
{
	g_pWaveDataInfo = pWaveDataInfo;
	hfgpio_fset_out_low(HFGPIO_F_WIFI_LED); //Open LED
	memset(&g_searchFreqData, 0, sizeof(SEARCH_FREQ_INFO));
	memset(pWaveDataInfo, 0, sizeof(ORIGIN_WAVE_DATA));
	lum_initSdo2Interupt();
#if 0
	g_searchFreqData.chipStatus = SX1208_SEARCHING;
	g_searchFreqData.curFreq = MIN_SEARCH_FREQUENT;
	g_searchFreqData.timeout = hfsys_get_time();
	lum_changeToSearchFreqMode();
	lum_searchNextFreq();
	lum_start433StudyTimer(MAX_SEARCH_FREQ_TIMER_GAP);
#else
	g_searchFreqData.bestFreq = 433920000;
	lum_enterStudyMode(g_searchFreqData.bestFreq);
#endif
}
Exemplo n.º 2
0
/*************************************************
* Function: ZC_SendJdQueryReq
* Description: 
* Author: cxy 
* Returns: 
* Parameter: 
* History:
*************************************************/
void ZC_SendJDQueryReq(u8 *pu8Msg, u32 u32RecvLen,struct sockaddr_in addr)
{
    int len_udp_back;
	cmd_header* pCmd = NULL;
	ZC_SendParam struParam;
    
	cJSON* jDevice = ZC_JDPacketAnalyse(&pCmd, (char *)pu8Msg, u32RecvLen);
	if(jDevice == NULL)
	{
		ZC_Printf("PacketAnalyse error\n\r");
		return;
	}
	cJSON *root = cJSON_CreateObject();							    //注意用完必须释放内存
	if(root == NULL)
	{
		ZC_Printf("cJSON_CreateObject failed");
		cJSON_Delete(jDevice);
		return;
	}
				
	switch(pCmd->type)
	{
		case 1:
			{
				//int smtlk = 0;
                u8 DeviceId[ZC_HS_DEVICE_ID_LEN+1];
                u8 *pu8DeviceId;
                #if 0
				hfsys_nvm_read(0,(char *)&smtlk,4);
				if(!((hfsys_get_time() < 2000*60) && (smtlk == 1)))
				{
					smtlk = 0;
					hfsys_nvm_write(0,(char *)&smtlk,4);
					break;
				}
				#endif
				cJSON *pItem = cJSON_GetObjectItem(jDevice, "productuuid");
				if( (strcmp((const char *)JD_PROUUID, (const char *)pItem->valuestring) )||(pItem->valuestring[0]==0)||(strcmp("0", (const char *)pItem->valuestring) ))
				{
					if(ZC_MAGIC_FLAG!=g_struZcConfigDb.struJdInfo.u32MagicFlag)
					{
						cJSON_AddStringToObject(root,"feedid", "0");
						ZC_Printf("Configuration file not exists");
					}
					else
					{
						cJSON_AddStringToObject(root,"feedid", (const char *)g_struZcConfigDb.struJdInfo.u8Feedid);
						ZC_Printf("Configuration file exists");
					}

                    ZC_GetStoreInfor(ZC_GET_TYPE_DEVICEID, &pu8DeviceId);
                    memcpy(DeviceId, pu8DeviceId, ZC_HS_DEVICE_ID_LEN);
                    DeviceId[ZC_HS_DEVICE_ID_LEN] = 0;
					cJSON_AddStringToObject(root,"mac", (const char *)DeviceId);
					cJSON_AddStringToObject(root,(const char *)"productuuid", (const char *)JD_PROUUID);
								
					int length = ZC_JDPacketBuild(pu8Msg, 2, 2, root);
                    struParam.u8NeedPoll = 0;
                    struParam.pu8AddrPara = (u8 *)&addr;
                    g_struProtocolController.pstruMoudleFun->pfunSendUdpData(g_Jdfd, pu8Msg, length, &struParam); 
                    ZC_Printf("HeartBeat_OK\n");
				}				
				break;
			}
		case 3:
			{		
				cJSON *pItem = cJSON_GetObjectItem(jDevice,"feedid");
                ZC_StoreFeedInfo((u8 *)pItem->valuestring);
				
				cJSON_AddNumberToObject(root,"code",0);
				cJSON_AddStringToObject(root,"msg","write feed_id and accesskey successfully!");
				len_udp_back = ZC_JDPacketBuild(pu8Msg, 2, 4, root);
                struParam.u8NeedPoll = 0;
                struParam.pu8AddrPara = (u8*)&addr;
                g_struProtocolController.pstruMoudleFun->pfunSendUdpData(g_Jdfd, pu8Msg, len_udp_back, &struParam); 
				char* p = cJSON_PrintUnformatted(jDevice);
				ZC_Printf("WriteOK_%s",p);
				hfmem_free(p);							
				break;
			}	             
		default:
				break;
	}		
	cJSON_Delete(root);
	cJSON_Delete(jDevice);  
}
Exemplo n.º 3
0
static void USER_FUNC lum_searchFreqCallback(void)
{
	U8 rssiData = 0;
	U32 readCount = 0;
	U32 beginTime = 0;
	U32 curTime = 0;
	U32 totalRssi = 0;
	U32 waitTime = MIN_SEARCH_FREQ_WAIT_TIME;
	static U8 g_bLastFound = 0;



	if(g_searchFreqData.foundIrq)
	{
		lum_setSdo2InteruptStatus(FALSE);
		beginTime = hfsys_get_time();
		while(1)
		{
			if((GpioGetReg(GPIO_C_IN)&0x04) != 0)
			{
				rssiData = lum_spiReadData(REG_RSSIVALUE);
				if(waitTime != MAX_SEARCH_FREQ_WAIT_TIME)
				{
					waitTime = MAX_SEARCH_FREQ_WAIT_TIME;
				}
				if(rssiData != 0x80)
				{
					readCount++;
					totalRssi += rssiData;
					if(readCount >= MAX_READ_RSSI_COUNT)
					{
						totalRssi /=  readCount;
						if(totalRssi > g_searchFreqData.maxRssi)
						{
							if(g_bLastFound != 0)
							{
								g_searchFreqData.maxRssi = totalRssi;
								g_searchFreqData.bestFreq = g_searchFreqData.curFreq;
							}
							else
							{
								totalRssi = 0;
								g_bLastFound = 1;
							}
						}
						curTime = hfsys_get_time();
						break;
					}
				}
			}
			else
			{
				curTime = hfsys_get_time();
				if(curTime < beginTime)
				{
					beginTime = 0;
				}
				if((curTime - beginTime) > waitTime)
				{
					totalRssi = 0;
					g_bLastFound = 0;
					break;
				}
			}
		}
	}

	//lumi_debug("curFreq=%ld RSSI=%d bSdo2High=%d readCount=%d timegap=%d\n", g_searchFreqData.curFreq, totalRssi, g_searchFreqData.foundIrq, readCount, (curTime - beginTime));
	

	if(g_searchFreqData.curFreq < MAX_SEARCH_FREQUENT)
	{
		//search next frequent
		if(g_searchFreqData.foundIrq)
		{
			g_searchFreqData.curFreq += MIN_SEARCH_FREQ_GAP;
		}
		else
		{
			g_searchFreqData.curFreq += MAX_SEARCH_FREQ_GAP;
		}
		if(readCount == 0)
		{
			g_searchFreqData.foundIrq = 0;
		}
		lum_searchNextFreq();
	}
	else if(g_searchFreqData.maxRssi < MIN_SEARCH_FREQ_RSSI)
	{
		curTime = hfsys_get_time();
		if(curTime < MAX_STUDY_TIME_WAIT || (curTime - g_searchFreqData.timeout) < MAX_STUDY_TIME_WAIT)
		{
			//search again
			U32 lastTime;


			lastTime = g_searchFreqData.timeout;
			memset(&g_searchFreqData, 0, sizeof(SEARCH_FREQ_INFO));
			g_searchFreqData.chipStatus = SX1208_SEARCHING;
			g_searchFreqData.curFreq = MIN_SEARCH_FREQUENT;
			g_searchFreqData.timeout = lastTime;
			lum_searchNextFreq();
		}
		else
		{
			//Search Faild;
			lum_setSdo2InteruptStatus(FALSE);
			g_searchFreqData.chipStatus = SX1208_IDLE;
			lum_setRfMode(RF_SLEEP);
			lum_sendReplyStudyMessage();
			lumi_debug("search frequent timeout time1=%ld time2=%ld\n", g_searchFreqData.timeout, curTime);
		}
	}
	else
	{
		//search success
		lum_setSdo2InteruptStatus(FALSE);
		lum_enterStudyMode(g_searchFreqData.bestFreq);
	}
}