Пример #1
0
/* Main loop */
int main()
{
    CYBLE_API_RESULT_T apiResult;
    
    CyGlobalIntEnable;
    Initialization();
    
    for(;;)
    {
        /* Delayed start of advertisement */
        if(initCounter == 6)
        {
            initCounter = 7;
            WDT_DisableWcoEcoCounters();
            
            apiResult = CyBle_GappStartAdvertisement(CYBLE_ADVERTISING_CUSTOM);
            if(apiResult != CYBLE_ERROR_OK)
            {
                CYASSERT(0);
            }
        }
        
        CyBle_ProcessEvents(); /* BLE stack processing state machine interface */
        
        LowPower();
    }
}
Пример #2
0
/*
将E2中的一个值加1然后写回E2。由于E2中存的是BCD码,要转换为HEX,最后再转为BCD保存
函数名太汇编风格了                ----FIX ME----
len参数是不是不必要的?           ----FIX ME----
*/
void E2PINC(uint eeAddr, uchar len)
{
	uint tmp;
	uchar eebuf[2];
	
	//读固定存储0x68值的E2地址,以确定E2是否正确。【这种防护机制的作用有多大?】
	Read512(eebuf, EE64_Check68_Add, 1);
	if(0x68 != eebuf[0])
	{
		return;
	}
	
	Read512(eebuf, eeAddr, len);
	BHN(eebuf, eebuf, 2, 2);			//BCD转HEX,名称太汇编了
	tmp = eebuf[1];
	tmp <<= 8;
	tmp += eebuf[0];
	tmp++;
	
	eebuf[0] = (uchar)tmp;
	tmp >>= 8;
	eebuf[1] = (uchar)tmp;
	HB2(eebuf, eebuf, 2, 2);		//HEX转BCD,名称太汇编了
	
	if(LowPower())
		return;
		
	Write512(eebuf, eeAddr, len);	
}
Пример #3
0
/* Format:    AT#PowerSaving -r+enter*/
int16 iot_exec_atcmd_ps_set(puchar pCmdBuf, int16 AtCmdLen)
{
    char *argv[MAX_OPTION_COUNT];
    char *opString = "r::l:t:?";
    char *endptr = NULL;
    int16 argc = 0;
    char opt = 0;

    uint8  Level = 0;
    uint32 SleepTime = 0;

    split_string_cmd(pCmdBuf, AtCmdLen, &argc, argv);
    opt = getopt(argc, argv, opString);

    while (opt != -1) {
        switch (opt) {
            case 'l':
                /*write power saving level*/
                Level = (uint8)simple_strtol(optarg,&endptr,0);
                if ((Level>0) && (Level<=5)) {
                    printf_high("[PS Lvl]=%d\n",Level);
                    pIoTMlme->PMLevel = Level;
                }
                break;
            case 't':
                /*power sleep time*/
                SleepTime = (uint32)simple_strtol(optarg,&endptr,0);
                if ((Level>0) && (Level<=5)) {
                    printf_high("[PS] Lvl=%d Sleep=%u(us)\n",Level,SleepTime);
                    LowPower(0,Level,SleepTime);
                }
                break;
            case 'r':
                /*read power saving level*/
                printf_high("[PS Lvl]=%d\n",pIoTMlme->PMLevel);
                break;
            case '?':
            default:
                break;
        }
        opt = getopt(argc, argv, opString);
    }

    return 0;
}