ARCS SDK
LISTENAI Software Development Kit
Loading...
Searching...
No Matches
lisa_rtc_arcs.c File Reference

LISA RTC ARCS 平台适配层 More...

#include "lisa_rtc.h"
#include "Driver_CALENDAR.h"
#include <stddef.h>
#include <string.h>
#include <lisa_mutex.h>
#include <stdbool.h>
#include <lisa_log.h>

Data Structures

struct  lisa_rtc_priv_t
 

Macros

#define LOG_TAG   "lisa_rtc_arcs"
 
#define DEVICE_LOCK(priv)
 
#define DEVICE_UNLOCK(priv)
 
#define RTC_PERIODIC_EVENT_MASK   (LISA_RTC_EVENT_SECOND | LISA_RTC_EVENT_MINUTE | LISA_RTC_EVENT_HOUR)
 
#define RTC_YEAR_MIN   0U
 
#define RTC_YEAR_MAX   127U
 

Functions

static void rtc_hal_callback (uint32_t event, void *workspace)
 HAL层中断回调
 
static bool rtc_validate_common_time (uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
static bool rtc_validate_time_struct (const lisa_rtc_time_t *time)
 
static bool rtc_validate_alarm_struct (const lisa_rtc_alarm_t *alarm)
 
static int arcs_rtc_set_time (lisa_device_t *dev, const lisa_rtc_time_t *time)
 设置RTC时间
 
static int arcs_rtc_get_time (lisa_device_t *dev, lisa_rtc_time_t *time)
 获取RTC时间
 
static int arcs_rtc_set_alarm (lisa_device_t *dev, uint8_t alarm_id, const lisa_rtc_alarm_t *alarm)
 设置闹钟
 
static int arcs_rtc_get_alarm (lisa_device_t *dev, uint8_t alarm_id, lisa_rtc_alarm_t *alarm)
 获取闹钟配置
 
static int arcs_rtc_enable_alarm (lisa_device_t *dev, uint8_t alarm_id, bool enable)
 启用或禁用闹钟
 
static int arcs_rtc_set_periodic_int (lisa_device_t *dev, lisa_rtc_event_t event, bool enable)
 设置周期性中断
 
static int arcs_rtc_get_capabilities (lisa_device_t *dev, lisa_rtc_capabilities_t *caps)
 获取RTC设备能力
 
static int arcs_rtc_set_callback (lisa_device_t *dev, lisa_rtc_callback_t callback, void *user_data)
 设置RTC事件回调
 
static int arcs_rtc0_init (void)
 
 LISA_DEVICE_REGISTER (rtc0, &arcs_rtc_api, &rtc0_priv, NULL, arcs_rtc0_init, LISA_DEVICE_LEVEL_NORMAL, LISA_DEVICE_PRIORITY_NORMAL)
 

Variables

static lisa_rtc_priv_t rtc0_priv
 
static const lisa_rtc_api_t arcs_rtc_api
 

Detailed Description

LISA RTC ARCS 平台适配层

此文件实现 ARCS 芯片平台的 RTC 硬件适配

Note
ARCS 芯片使用 CALENDAR 外设实现 RTC 功能

Macro Definition Documentation

◆ DEVICE_LOCK

#define DEVICE_LOCK (   priv)
Value:
do { \
if (priv->mutex) { \
lisa_mutex_lock(priv->mutex, LISA_OS_WAIT_FOREVER); \
} \
} while (0)

◆ DEVICE_UNLOCK

#define DEVICE_UNLOCK (   priv)
Value:
do { \
if (priv->mutex) { \
lisa_mutex_unlock(priv->mutex); \
} \
} while (0)

◆ LOG_TAG

#define LOG_TAG   "lisa_rtc_arcs"

◆ RTC_PERIODIC_EVENT_MASK

#define RTC_PERIODIC_EVENT_MASK   (LISA_RTC_EVENT_SECOND | LISA_RTC_EVENT_MINUTE | LISA_RTC_EVENT_HOUR)

◆ RTC_YEAR_MAX

#define RTC_YEAR_MAX   127U

◆ RTC_YEAR_MIN

#define RTC_YEAR_MIN   0U

Function Documentation

◆ arcs_rtc0_init()

static int arcs_rtc0_init ( void  )
static

◆ arcs_rtc_enable_alarm()

static int arcs_rtc_enable_alarm ( lisa_device_t dev,
uint8_t  alarm_id,
bool  enable 
)
static

启用或禁用闹钟

◆ arcs_rtc_get_alarm()

static int arcs_rtc_get_alarm ( lisa_device_t dev,
uint8_t  alarm_id,
lisa_rtc_alarm_t alarm 
)
static

获取闹钟配置

◆ arcs_rtc_get_capabilities()

static int arcs_rtc_get_capabilities ( lisa_device_t dev,
lisa_rtc_capabilities_t caps 
)
static

获取RTC设备能力

◆ arcs_rtc_get_time()

static int arcs_rtc_get_time ( lisa_device_t dev,
lisa_rtc_time_t time 
)
static

获取RTC时间

◆ arcs_rtc_set_alarm()

static int arcs_rtc_set_alarm ( lisa_device_t dev,
uint8_t  alarm_id,
const lisa_rtc_alarm_t alarm 
)
static

设置闹钟

◆ arcs_rtc_set_callback()

static int arcs_rtc_set_callback ( lisa_device_t dev,
lisa_rtc_callback_t  callback,
void *  user_data 
)
static

设置RTC事件回调

◆ arcs_rtc_set_periodic_int()

static int arcs_rtc_set_periodic_int ( lisa_device_t dev,
lisa_rtc_event_t  event,
bool  enable 
)
static

设置周期性中断

◆ arcs_rtc_set_time()

static int arcs_rtc_set_time ( lisa_device_t dev,
const lisa_rtc_time_t time 
)
static

设置RTC时间

◆ LISA_DEVICE_REGISTER()

LISA_DEVICE_REGISTER ( rtc0  ,
arcs_rtc_api,
rtc0_priv,
NULL  ,
arcs_rtc0_init  ,
LISA_DEVICE_LEVEL_NORMAL  ,
LISA_DEVICE_PRIORITY_NORMAL   
)

◆ rtc_hal_callback()

static void rtc_hal_callback ( uint32_t  event,
void *  workspace 
)
static

HAL层中断回调

◆ rtc_validate_alarm_struct()

static bool rtc_validate_alarm_struct ( const lisa_rtc_alarm_t alarm)
static

◆ rtc_validate_common_time()

static bool rtc_validate_common_time ( uint16_t  year,
uint8_t  month,
uint8_t  day,
uint8_t  hour,
uint8_t  minute,
uint8_t  second 
)
static

◆ rtc_validate_time_struct()

static bool rtc_validate_time_struct ( const lisa_rtc_time_t time)
static

Variable Documentation

◆ arcs_rtc_api

const lisa_rtc_api_t arcs_rtc_api
static
Initial value:
= {
.set_time = arcs_rtc_set_time,
.get_time = arcs_rtc_get_time,
.set_alarm = arcs_rtc_set_alarm,
.get_alarm = arcs_rtc_get_alarm,
.enable_alarm = arcs_rtc_enable_alarm,
.set_periodic_int = arcs_rtc_set_periodic_int,
.get_capabilities = arcs_rtc_get_capabilities,
.set_callback = arcs_rtc_set_callback,
}
static int arcs_rtc_set_callback(lisa_device_t *dev, lisa_rtc_callback_t callback, void *user_data)
设置RTC事件回调
Definition lisa_rtc_arcs.c:437
static int arcs_rtc_get_capabilities(lisa_device_t *dev, lisa_rtc_capabilities_t *caps)
获取RTC设备能力
Definition lisa_rtc_arcs.c:419
static int arcs_rtc_get_alarm(lisa_device_t *dev, uint8_t alarm_id, lisa_rtc_alarm_t *alarm)
获取闹钟配置
Definition lisa_rtc_arcs.c:283
static int arcs_rtc_set_time(lisa_device_t *dev, const lisa_rtc_time_t *time)
设置RTC时间
Definition lisa_rtc_arcs.c:166
static int arcs_rtc_get_time(lisa_device_t *dev, lisa_rtc_time_t *time)
获取RTC时间
Definition lisa_rtc_arcs.c:206
static int arcs_rtc_set_alarm(lisa_device_t *dev, uint8_t alarm_id, const lisa_rtc_alarm_t *alarm)
设置闹钟
Definition lisa_rtc_arcs.c:240
static int arcs_rtc_enable_alarm(lisa_device_t *dev, uint8_t alarm_id, bool enable)
启用或禁用闹钟
Definition lisa_rtc_arcs.c:321
static int arcs_rtc_set_periodic_int(lisa_device_t *dev, lisa_rtc_event_t event, bool enable)
设置周期性中断
Definition lisa_rtc_arcs.c:355

◆ rtc0_priv

lisa_rtc_priv_t rtc0_priv
static