PV1_MakeProject/include/assistant.h

169 lines
6.1 KiB
C

#ifndef ASSISTANT_H
#define ASSISTANT_H
#ifdef __cplusplus
extern "C" {
#endif
#define MAX_TIP_LEN (60 * 4 + 1)
#define MAX_ALARM_ITEMS (1024)
typedef enum
{
ASSISTANT_TYPE_CLOCK = 0,
ASSISTANT_TYPE_REMAIND,
ASSISTANT_TYPE_SESSION,
} ASSISTANT_TYPE;
typedef enum
{
STATUS_IDLE = 0,
STATUS_PREPARE_STANDBY,
STATUS_RUNNING,
STATUS_NOT_IN_USE,
STATUS_REMOVE_ITEM,
STATUS_ADD_ITEM,
} ASSISTANT_STATUS;
typedef struct
{
unsigned long long itemId; ///< 提醒、闹钟ID
ASSISTANT_TYPE itemType; ///< 类型: 0 闹钟, 1 提醒
int priority; ///< 优先级: 暂未使用
REPEAT_MODE repeatMode; ///< 重复模式
int year; ///< 年
int month; ///< 月
int day; ///< 日
int hour; ///< 小时
int minute; ///< 分钟
int second; ///< 秒钟
int weekDay; ///< 星期
unsigned int timerId; ///< 关联的定时器ID
unsigned long long voiceId; ///< 闹钟资源ID
char strTips[MAX_TIP_LEN]; ///< 提醒 TTS 文本
char resUrl[2048]; ///< 资源URL
char voiceRes[32]; ///< 资源声音文件ID
char voiceResType[64]; ///< 资源类型
} ASSISTANT_ITEM_INFO, *PASSISTANT_ITEM_INFO;
typedef struct
{
int nItems; ///< 协议包含的数据个数
PASSISTANT_ITEM_INFO pAlarmInfo; ///< 提醒、闹钟数据详细信息
} ASSISTANT_SYNC_INFO, *PASSISTANT_SYNC_INFO;
typedef struct ASSISTANT_ARRAY_INFO
{
ASSISTANT_ITEM_INFO alarmItem;
struct ASSISTANT_ARRAY_INFO *next, *prev;
} *PASSISTANT_ARRAY_INFO;
typedef struct
{
int cmd;
int nItems;
ASSISTANT_TYPE type;
unsigned long long ids[MAX_ALARM_ITEMS];
} ASSISTANT_NOTIFY_INFO, *PASSISTANT_NOTIFY_INFO;
typedef struct
{
int cmd;
int val;
} ASSISTANT_RSP_STATUS, *PASSISTANT_RSP_STATUS;
typedef struct
{
int cmd;
int val;
int errCode;
} ASSISTANT_NOFIFY_EVENT, *PASSISTANT_NOFIFY_EVENT;
static void __printAssistantNofifyInfo(const char *pTags, PASSISTANT_NOTIFY_INFO pInfo)
{
int i;
if(pTags && strlen(pTags) > 0)
{
LOG_EX2(LOG_Debug, "%s:\n", pTags);
LOG_EX2(LOG_Debug, "**************************************************************\n");
}
LOG_EX2(LOG_Debug, "Sync Items : %d\n", pInfo->nItems);
LOG_EX2(LOG_Debug, "-------------------------\n");
LOG_EX2(LOG_Debug, "| Alarm Id | Type |\n");
LOG_EX2(LOG_Debug, "-------------------------\n");
for(i = 0; i < pInfo->nItems; i++)
{
LOG_EX2(LOG_Debug, "| %8llu | %11s |\n",
pInfo->ids[i],
(pInfo->type == ASSISTANT_TYPE_REMAIND) ? "Remaind" : "Alarm Clock");
}
LOG_EX2(LOG_Debug, "-------------------------\n");
}
static void __printAssistantSyncInfo(const char* pTags, PASSISTANT_SYNC_INFO pInfo)
{
int i;
char buf[MAX_PATH];
struct tm localTime;
time_t tmStamp;
if(pTags && strlen(pTags) > 0)
{
LOG_EX2(LOG_Debug, "%s:\n", pTags);
LOG_EX2(LOG_Debug, "**************************************************************\n");
}
//fprintf(stdout, "Command : %d(%08X)\n", pInfo->cmd, pInfo->cmd);
LOG_EX2(LOG_Debug, "Sync Items : %d\n", pInfo->nItems);
LOG_EX2(LOG_Debug, "---------------------------------------------------------------------"
"-----------------------------------------------------------\n");
LOG_EX2(LOG_Debug, "| Alarm Id | Type | Priority | Repeat Mode | Week Day |"
" DateTime | Tips | Resource |\n");
LOG_EX2(LOG_Debug, "---------------------------------------------------------------------"
"-----------------------------------------------------------\n");
for(i = 0; i < pInfo->nItems; i++)
{
memset(buf, 0, MAX_PATH);
sprintf(buf, "%04u-%02u-%02u %02u:%02u:%02u",
(pInfo->pAlarmInfo[i].year == -1) ? 1900 : pInfo->pAlarmInfo[i].year + 1900,
(pInfo->pAlarmInfo[i].month == -1) ? 0 : pInfo->pAlarmInfo[i].month + 1,
(pInfo->pAlarmInfo[i].day == -1) ? 0 : pInfo->pAlarmInfo[i].day,
(pInfo->pAlarmInfo[i].hour == -1) ? 0 : pInfo->pAlarmInfo[i].hour,
(pInfo->pAlarmInfo[i].minute == -1) ? 0 : pInfo->pAlarmInfo[i].minute,
(pInfo->pAlarmInfo[i].second == -1) ? 0 : pInfo->pAlarmInfo[i].second);
LOG_EX2(LOG_Debug, "| %8llu | %11s | %8d | %15s | %d%d%d%d %d%d%d%d | %20s | %20s | %8llu |\n",
pInfo->pAlarmInfo[i].itemId,
(pInfo->pAlarmInfo[i].itemType == ASSISTANT_TYPE_REMAIND) ? "Remaind" : "Alarm Clock",
pInfo->pAlarmInfo[i].priority,
DumpTimerRepeatModeString(pInfo->pAlarmInfo[i].repeatMode),
(pInfo->pAlarmInfo[i].weekDay & (1 << 7))? 1 : 0,
(pInfo->pAlarmInfo[i].weekDay & (1 << 6))? 1 : 0,
(pInfo->pAlarmInfo[i].weekDay & (1 << 5))? 1 : 0,
(pInfo->pAlarmInfo[i].weekDay & (1 << 4))? 1 : 0,
(pInfo->pAlarmInfo[i].weekDay & (1 << 3))? 1 : 0,
(pInfo->pAlarmInfo[i].weekDay & (1 << 2))? 1 : 0,
(pInfo->pAlarmInfo[i].weekDay & (1 << 1))? 1 : 0,
(pInfo->pAlarmInfo[i].weekDay & (1 << 0))? 1 : 0,
buf,
pInfo->pAlarmInfo[i].strTips,
pInfo->pAlarmInfo[i].voiceId);
}
LOG_EX2(LOG_Debug, "---------------------------------------------------------------------"
"-----------------------------------------------------------\n");
}
#ifdef __cplusplus
}
#endif
#endif