void test_alarm(void) { int i,j,it,cnt,icnt; unsigned char testbuf[100]; cnt = 0; icnt=1000; it=0; #if 0 //cnt =alarm_count_get(); for(i=0;i<sizeof testbuf;i++) testbuf[i]=1; alarm_save(0,testbuf,100); for(i=0;i<sizeof testbuf;i++) testbuf[i]=2; alarm_save(0,testbuf,100); memset(testbuf,0,sizeof testbuf); alarm_read(0,1,testbuf,100); memset(testbuf,0,sizeof testbuf); alarm_read(0,0,testbuf,100); #endif while(1){ for(j=1;j<2;j++){ while(cnt<300){ for(i=0;i<sizeof testbuf;i++) testbuf[i]=i/3+cnt; alarm_save(j,testbuf,100); cnt ++; icnt = cnt; } cnt=299; icnt=255; while(cnt){ delay_us(200000); memset(testbuf,0,sizeof testbuf); alarm_read(j,icnt,testbuf,100); for(i=0;i<sizeof testbuf;i++) if(testbuf[i]!=(unsigned char)(i/3+cnt)) break; if(i==sizeof testbuf) print(PRINT_NORMAL,"check cnt icnt: %d it:%d ok\n",icnt,it); else print(PRINT_NORMAL,"check cnt icnt :%d it %d err\n",icnt,it); cnt --; icnt--; if(icnt<0) icnt=255; } } } }
} res->next = NULL; return res; } } static alarm_t* root_peek(void) { return root; } static void callback( __attribute__ ((unused)) int unused0, __attribute__ ((unused)) int unused1, __attribute__ ((unused)) int unused2, __attribute__ ((unused)) void* ud) { for (alarm_t* alarm = root_peek(); alarm != NULL; alarm = root_peek()) { uint32_t now = alarm_read(); // has the alarm not expired yet? (distance from `now` has to be larger or // equal to distance from current clock value. if (alarm->expiration - alarm->t0 > now - alarm->t0) { alarm_internal_set(alarm->expiration); break; } else { root_pop(); if (alarm->callback) { tock_enqueue(alarm->callback, now, alarm->expiration, 0, alarm->ud); } } } }
int alarm_readflash_bin(unsigned char type,unsigned int cur,void *pbuf,unsigned short len) { return alarm_read(type,cur,pbuf,len); }