📄 setgetdatetime.c
字号:
/* system service include file */
#include <services/services.h>
/* real time clock service include file */
#include <services/rtc/adi_rtc.h>
/* system time include file */
#include <time.h>
/* initialization 'sizings' */
#include "adi_ssl_init.h"
/**************************************************************
Below are masks that are OR's into the final result, to
determine what specific things may have failed.
***************************************************************/
#define ADI_TEST_SUCCESSFUL 0
#define ADI_TEST_SSL_INIT_FAILED 0x01
#define ADI_TEST_SET_DATETIME_FAILED 0x04
#define ADI_TEST_GET_DATETIME_FAILED 0x08
#define ADI_TEST_DATETIME_WRONG 0x10
#define ADI_TEST_SSL_TERMINATE_FAILED 0x40
volatile static u32 SecondsCompleteFlag;
/* Callback function */
static void RTCCallback(void *ClientHandle, u32 Event, void *pArg)
{
switch ( (u32)Event )
{
/* one second periodic interrupt */
case ADI_RTC_EVENT_SECONDS:
{
SecondsCompleteFlag = 1;
adi_rtc_RemoveCallback(ADI_RTC_EVENT_SECONDS );
break;
}
/* one minute periodic interrupt */
case ADI_RTC_EVENT_MINUTES :
break;
/* hourly periodic interrupt */
case ADI_RTC_EVENT_HOURS:
break;
/* daily periodic interrupt */
case ADI_RTC_EVENT_DAYS:
break;
/* stopwatch countdown timeout event */
case ADI_RTC_EVENT_STOPWATCH:
break;
/* time of day, daily alarm */
case ADI_RTC_EVENT_EACH_DAY_ALARM:
break;
/* day & time once only alarm */
case ADI_RTC_EVENT_ONCE_ALARM:
break;
/* pending register writes complete */
case ADI_RTC_EVENT_WRITES_COMPLETE:
break;
default:
break;
}
return;
}
/* **************************************************************
*
* Main Function of the Application
*
* **************************************************************/
main()
{
/* variables for storing result codes */
u32 TmpResult, FinalResult;
/* argument for saving critical region data */
void *critical_region_arg = 0;
/* two "tm" structures (see 'time.h') */
struct tm DateTime1, DateTime2;
/* Start by assuming success. */
FinalResult = ADI_TEST_SUCCESSFUL;
/* Use temporary result code to check whether system services */
/* were successfully initialized - see 'ssl_init.c' */
if(( TmpResult = adi_ssl_Init() ) != 0 )
{
/* Add a specific error code to the final result */
FinalResult |= ADI_TEST_SSL_INIT_FAILED;
}
if( FinalResult == 0 )
{
/* set up the fields of the first date/time structure */
DateTime1.tm_sec = 33; /* 33 seconds */
DateTime1.tm_min = 22; /* 22 minutes */
DateTime1.tm_hour = 9; /* hour 9 */
DateTime1.tm_mday = 7; /* day of month 7 */
DateTime1.tm_mon = 6; /* July (tm_mon ranges = 0-11) */
DateTime1.tm_year = 2007 - 1900; /* year 2007 */
/* zero the fields of second date/time structure */
DateTime2.tm_sec = 0;
DateTime2.tm_min = 0;
DateTime2.tm_hour = 0;
DateTime2.tm_mday = 0;
DateTime2.tm_mon = 0;
DateTime2.tm_year = 0;
/* For the most predictable performance, synchronize the write to the 1 Hz "tick". */
/* zero this flag */
SecondsCompleteFlag = 0;
/* install a callback, that will set the flag */
adi_rtc_InstallCallback(ADI_RTC_EVENT_SECONDS, (void*)NULL, NULL, RTCCallback, (void*)NULL );
/* and set a breakpoint in the callback */
while( SecondsCompleteFlag == 0 );
/* set the date and time */
/* pass a pointer to the structure */
if( TmpResult = adi_rtc_SetDateTime( &DateTime1 ) != 0)
{
/* Add a specific error code to the final result */
FinalResult |= ADI_TEST_SET_DATETIME_FAILED;
}
/* synchronize again */
/* zero this flag */
SecondsCompleteFlag = 0;
/* install a callback, that will set the flag */
adi_rtc_InstallCallback(ADI_RTC_EVENT_SECONDS, (void*)NULL, NULL, RTCCallback, (void*)NULL );
/* and set a breakpoint in the callback */
while( SecondsCompleteFlag == 0 );
/* read the date and time */
/* pass a pointer to the second tm structure */
if(( TmpResult = adi_rtc_GetDateTime( &DateTime2 )) != 0 )
{
/* Add a specific error code to the final result */
FinalResult |= ADI_TEST_GET_DATETIME_FAILED;
}
else
{
/* okay to proceed; compare results */
/* Is it what we expect ? */
if ((DateTime2.tm_sec != (DateTime1.tm_sec) + 1)
|| (DateTime2.tm_min != DateTime1.tm_min)
|| (DateTime2.tm_hour != DateTime1.tm_hour)
|| (DateTime2.tm_mday != DateTime1.tm_mday)
|| (DateTime2.tm_mon != DateTime1.tm_mon)
|| (DateTime2.tm_year != DateTime1.tm_year) )
{
/* no, there is a wrong value in one of the fields! */
/* Add a specific error code to the final result */
/* (Note: View->Debug Window->Locals shows the "tm" structures) */
FinalResult |= ADI_TEST_DATETIME_WRONG;
}
}
}
/* Terminate the system services */
if(( TmpResult = adi_ssl_Terminate()) != 0 )
{
/* Add a specific error code to the final result */
FinalResult |= ADI_TEST_SSL_TERMINATE_FAILED;
}
/* Here, examine the value of "FinalResult" and see the definitions at
the beginning of this file which describe result, 0 means no errors. */
while( 1 )
{
TmpResult = FinalResult ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -