mirror of
https://github.com/apache/nuttx.git
synced 2026-09-30 19:06:22 +00:00
sched/semaphore: Fix pre-existing nxstyle issues in the touched files
The CI style check runs nxstyle over every file a pull request touches, so the files changed by the previous two commits have to comply even where the problems were not introduced here. 504 errors in 25 files are fixed: whitespace, blank lines, brace placement, switch/case indentation, label indentation and comment blocks only, with no functional change. Assisted-by: DeepSeek Harness:deepseek-flash Signed-off-by: rongbaichuan <rongbaichuan1027@163.com>
This commit is contained in:
parent
9c461f03ac
commit
00a379c3f7
25 changed files with 965 additions and 832 deletions
|
|
@ -61,6 +61,7 @@ static irqstate_t g_flags = 0;
|
|||
void save_and_cli(void)
|
||||
{
|
||||
irqstate_t flags = rspin_lock_irqsave(&g_lock);
|
||||
|
||||
if (!rspin_lock_is_recursive(&g_lock))
|
||||
{
|
||||
g_flags = flags;
|
||||
|
|
@ -166,6 +167,7 @@ void rtw_memset(void *pbuf, int c, uint32_t n)
|
|||
void rtw_init_sema(void **sema, int init_val)
|
||||
{
|
||||
sem_t *_sema;
|
||||
|
||||
_sema = calloc(1, sizeof(sem_t));
|
||||
if (!_sema)
|
||||
{
|
||||
|
|
@ -309,6 +311,7 @@ int rtw_init_xqueue(void **queue,
|
|||
struct mq_attr attr;
|
||||
struct file *mq;
|
||||
int ret;
|
||||
|
||||
mq = malloc(sizeof(struct file));
|
||||
if (!mq)
|
||||
{
|
||||
|
|
@ -334,6 +337,7 @@ int rtw_push_to_xqueue(void **queue, void *message, uint32_t timeout_ms)
|
|||
{
|
||||
struct file *mq = *queue;
|
||||
struct mq_attr attr;
|
||||
|
||||
file_mq_getattr(mq, &attr);
|
||||
return file_mq_send(mq, message, attr.mq_msgsize, 1);
|
||||
}
|
||||
|
|
@ -343,6 +347,7 @@ int rtw_pop_from_xqueue(void **queue, void *message, uint32_t timeout_ms)
|
|||
struct file *mq = *queue;
|
||||
struct mq_attr attr;
|
||||
unsigned int prio;
|
||||
|
||||
file_mq_getattr(mq, &attr);
|
||||
return !file_mq_receive(mq, message, attr.mq_msgsize, &prio);
|
||||
}
|
||||
|
|
@ -351,6 +356,7 @@ int rtw_deinit_xqueue(void **queue)
|
|||
{
|
||||
struct file *mq = *queue;
|
||||
int ret;
|
||||
|
||||
ret = file_mq_close(mq);
|
||||
if (ret >= 0)
|
||||
{
|
||||
|
|
@ -465,6 +471,7 @@ void ATOMIC_DEC(atomic_t *v)
|
|||
int ATOMIC_ADD_RETURN(atomic_t *v, int i)
|
||||
{
|
||||
int temp;
|
||||
|
||||
save_and_cli();
|
||||
temp = v->counter;
|
||||
temp += i;
|
||||
|
|
@ -476,6 +483,7 @@ int ATOMIC_ADD_RETURN(atomic_t *v, int i)
|
|||
int ATOMIC_SUB_RETURN(atomic_t *v, int i)
|
||||
{
|
||||
int temp;
|
||||
|
||||
save_and_cli();
|
||||
temp = v->counter;
|
||||
temp -= i;
|
||||
|
|
@ -510,6 +518,7 @@ static unsigned int __div64_32(uint64_t *n, unsigned int base)
|
|||
uint64_t res;
|
||||
uint64_t d = 1;
|
||||
unsigned int high = rem >> 32;
|
||||
|
||||
res = 0;
|
||||
if (high >= base)
|
||||
{
|
||||
|
|
@ -544,6 +553,7 @@ uint64_t rtw_modular64(uint64_t x, uint64_t y)
|
|||
{
|
||||
unsigned int __base = (y);
|
||||
unsigned int __rem;
|
||||
|
||||
if (((x) >> 32) == 0)
|
||||
{
|
||||
__rem = (unsigned int)(x) % __base;
|
||||
|
|
@ -562,6 +572,7 @@ static int arc4random(void)
|
|||
{
|
||||
uint32_t res = rtw_get_current_time();
|
||||
static unsigned long rtw_seed = 0xdeadb00b;
|
||||
|
||||
rtw_seed = ((rtw_seed & 0x007f00ff) << 7) ^
|
||||
((rtw_seed & 0x0f80ff00) >> 8) ^
|
||||
(res << 13) ^ (res >> 9);
|
||||
|
|
@ -574,6 +585,7 @@ int rtw_get_random_bytes(void *dst, uint32_t size)
|
|||
unsigned int *lp;
|
||||
int i;
|
||||
int count;
|
||||
|
||||
count = size / sizeof(unsigned int);
|
||||
lp = (unsigned int *)dst;
|
||||
for (i = 0; i < count; i++)
|
||||
|
|
@ -599,6 +611,7 @@ static int nuttx_task_hook(int argc, char *argv[])
|
|||
{
|
||||
struct task_struct *task;
|
||||
struct nthread_wrapper *wrap;
|
||||
|
||||
task = (struct task_struct *)
|
||||
((uintptr_t)strtoul(argv[1], NULL, 16));
|
||||
if (!task || !task->priv)
|
||||
|
|
@ -623,6 +636,7 @@ int rtw_create_task(struct task_struct *task, const char *name,
|
|||
char *argv[2];
|
||||
char arg1[16];
|
||||
int pid;
|
||||
|
||||
snprintf(arg1, 16, "%p", task);
|
||||
argv[0] = arg1;
|
||||
argv[1] = NULL;
|
||||
|
|
@ -659,6 +673,7 @@ int rtw_create_task(struct task_struct *task, const char *name,
|
|||
void rtw_delete_task(struct task_struct *task)
|
||||
{
|
||||
struct nthread_wrapper *wrap = task->priv;
|
||||
|
||||
if (kill(wrap->pid, SIGKILL))
|
||||
{
|
||||
return;
|
||||
|
|
@ -696,6 +711,7 @@ void *rtw_timer_create(const signed char *pctimername,
|
|||
thread_func_t pxcallbackfunction)
|
||||
{
|
||||
struct ntimer_wrapper *wrap;
|
||||
|
||||
wrap = calloc(1, sizeof(*wrap));
|
||||
if (!wrap)
|
||||
{
|
||||
|
|
@ -710,6 +726,7 @@ uint32_t rtw_timer_stop(void *xtimer,
|
|||
unsigned long xblocktime)
|
||||
{
|
||||
struct ntimer_wrapper *wrap = xtimer;
|
||||
|
||||
if (!work_available(&wrap->work))
|
||||
{
|
||||
work_cancel(LPWORK, &wrap->work);
|
||||
|
|
@ -722,6 +739,7 @@ uint32_t rtw_timer_delete(void *xtimer,
|
|||
unsigned long xblocktime)
|
||||
{
|
||||
struct ntimer_wrapper *wrap = xtimer;
|
||||
|
||||
rtw_timer_stop(xtimer, xblocktime);
|
||||
free(wrap);
|
||||
return 1;
|
||||
|
|
@ -730,6 +748,7 @@ uint32_t rtw_timer_delete(void *xtimer,
|
|||
uint32_t rtw_timer_is_timer_active(void *xtimer)
|
||||
{
|
||||
struct ntimer_wrapper *wrap = xtimer;
|
||||
|
||||
return !work_available(&wrap->work);
|
||||
}
|
||||
|
||||
|
|
@ -738,6 +757,7 @@ uint32_t rtw_timer_change_period(void *xtimer,
|
|||
unsigned long xblocktime)
|
||||
{
|
||||
struct ntimer_wrapper *wrap = xtimer;
|
||||
|
||||
if (work_available(&wrap->work))
|
||||
{
|
||||
work_queue(LPWORK, &wrap->work, wrap->callback, wrap, xnewperiod);
|
||||
|
|
@ -872,6 +892,7 @@ static void *device_mutex[5];
|
|||
static void device_mutex_init(uint32_t device)
|
||||
{
|
||||
irqstate_t status;
|
||||
|
||||
if (atomic_or(&mutex_init, (1 << device)) & (1 << device) == 0)
|
||||
{
|
||||
rtw_mutex_init(&device_mutex[device]);
|
||||
|
|
@ -897,6 +918,7 @@ void device_mutex_unlock(uint32_t device)
|
|||
uint32_t rtw_get_free_heap_size(void)
|
||||
{
|
||||
struct mallinfo mem;
|
||||
|
||||
mem = mallinfo();
|
||||
return mem.arena;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -938,6 +938,7 @@ static void bl_os_timer_callback(wdparm_t arg)
|
|||
void *bl_os_timer_create(void *func, void *argv)
|
||||
{
|
||||
struct timer_adpt *timer = kmm_malloc(sizeof(struct timer_adpt));
|
||||
|
||||
if (!timer)
|
||||
{
|
||||
ASSERT(0);
|
||||
|
|
@ -1065,6 +1066,7 @@ int bl_os_timer_start_periodic(void *timerid, long t_sec, long t_nsec)
|
|||
void *bl_os_workqueue_create(void)
|
||||
{
|
||||
struct work_s *work = kmm_calloc(1, sizeof(struct work_s));
|
||||
|
||||
if (!work)
|
||||
{
|
||||
ASSERT(0);
|
||||
|
|
@ -1145,6 +1147,7 @@ int bl_os_workqueue_submit_lpwork(void *work,
|
|||
uint64_t bl_os_clock_gettime_ms(void)
|
||||
{
|
||||
struct timespec ts;
|
||||
|
||||
clock_systime_timespec(&ts);
|
||||
return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
|
||||
}
|
||||
|
|
@ -1521,23 +1524,23 @@ static void bl_os_log_writev(uint32_t level,
|
|||
{
|
||||
switch (level)
|
||||
{
|
||||
case LOG_LEVEL_ERROR:
|
||||
{
|
||||
vsyslog(LOG_ERR, format, args);
|
||||
break;
|
||||
}
|
||||
case LOG_LEVEL_ERROR:
|
||||
{
|
||||
vsyslog(LOG_ERR, format, args);
|
||||
break;
|
||||
}
|
||||
|
||||
case LOG_LEVEL_WARN:
|
||||
{
|
||||
vsyslog(LOG_WARNING, format, args);
|
||||
break;
|
||||
}
|
||||
case LOG_LEVEL_WARN:
|
||||
{
|
||||
vsyslog(LOG_WARNING, format, args);
|
||||
break;
|
||||
}
|
||||
|
||||
case LOG_LEVEL_INFO:
|
||||
{
|
||||
vsyslog(LOG_INFO, format, args);
|
||||
break;
|
||||
}
|
||||
case LOG_LEVEL_INFO:
|
||||
{
|
||||
vsyslog(LOG_INFO, format, args);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1569,6 +1572,7 @@ void bl_os_log_write(uint32_t level,
|
|||
if (&_wifi_log_flag)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
bl_os_log_writev(level, tag, NULL, 0, format, list);
|
||||
va_end(list);
|
||||
|
|
|
|||
|
|
@ -2282,7 +2282,7 @@ int esp32c3_bt_controller_enable(esp_bt_mode_t mode)
|
|||
|
||||
if (g_lp_cntl.enable)
|
||||
{
|
||||
btdm_controller_enable_sleep(true);
|
||||
btdm_controller_enable_sleep(true);
|
||||
}
|
||||
|
||||
if (btdm_controller_enable(mode) != 0)
|
||||
|
|
@ -2381,6 +2381,7 @@ void esp32c3_vhci_host_send_packet(uint8_t *data, uint16_t len)
|
|||
int esp32c3_vhci_register_callback(const esp_vhci_host_callback_t *callback)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
if (btdm_controller_status != ESP_BT_CONTROLLER_STATUS_ENABLED)
|
||||
{
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -4695,9 +4695,9 @@ esp_err_t esp_wifi_deinit(void)
|
|||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
esp32c3_pm_unregister_skip_sleep_callback(
|
||||
esp32c3_pm_unregister_skip_sleep_callback(
|
||||
esp_wifi_internal_is_tsf_active);
|
||||
esp32c3_pm_unregister_inform_out_sleep_overhead_callback(
|
||||
esp32c3_pm_unregister_inform_out_sleep_overhead_callback(
|
||||
esp_wifi_internal_update_light_sleep_wake_ahead_time);
|
||||
#endif
|
||||
return ret;
|
||||
|
|
@ -5464,6 +5464,7 @@ int esp_wifi_sta_connect(void)
|
|||
{
|
||||
int scan_retry = 3;
|
||||
int retry_cnt = 0;
|
||||
|
||||
memset(&config, 0x0, sizeof(wifi_scan_config_t));
|
||||
config.scan_type = IW_SCAN_TYPE_ACTIVE;
|
||||
config.channel = g_channel;
|
||||
|
|
@ -6916,6 +6917,7 @@ void esp_wifi_stop_callback(void)
|
|||
wlinfo("Trying to stop Wi-Fi...");
|
||||
|
||||
int ret = esp_wifi_stop();
|
||||
|
||||
if (ret)
|
||||
{
|
||||
wlerr("ERROR: Failed to stop Wi-Fi ret=%d\n", ret);
|
||||
|
|
|
|||
|
|
@ -919,6 +919,7 @@ static void *semphr_create_wrapper(uint32_t max, uint32_t init)
|
|||
static void semphr_delete_wrapper(void *semphr)
|
||||
{
|
||||
struct bt_sem_s *bt_sem = (struct bt_sem_s *)semphr;
|
||||
|
||||
nxsem_destroy(&bt_sem->sem);
|
||||
kmm_free(bt_sem);
|
||||
}
|
||||
|
|
@ -1432,6 +1433,7 @@ static int task_create_wrapper(void *task_func, const char *name,
|
|||
static void task_delete_wrapper(void *task_handle)
|
||||
{
|
||||
pid_t pid = (pid_t)((uintptr_t)task_handle);
|
||||
|
||||
kthread_delete(pid);
|
||||
}
|
||||
|
||||
|
|
@ -1471,6 +1473,7 @@ static bool IRAM_ATTR is_in_isr_wrapper(void)
|
|||
static void *malloc_wrapper(size_t size)
|
||||
{
|
||||
void * p = kmm_malloc(size);
|
||||
|
||||
DEBUGASSERT(p);
|
||||
|
||||
return p;
|
||||
|
|
@ -2567,6 +2570,7 @@ static esp_err_t btdm_low_power_mode_init(esp_bt_controller_config_t *cfg)
|
|||
static void btdm_controller_mem_init(void)
|
||||
{
|
||||
extern void btdm_controller_rom_data_init(void);
|
||||
|
||||
btdm_controller_rom_data_init();
|
||||
}
|
||||
|
||||
|
|
@ -2598,8 +2602,8 @@ static void bt_controller_deinit_internal(void)
|
|||
|
||||
if (g_osi_funcs_p != NULL)
|
||||
{
|
||||
free(g_osi_funcs_p);
|
||||
g_osi_funcs_p = NULL;
|
||||
free(g_osi_funcs_p);
|
||||
g_osi_funcs_p = NULL;
|
||||
}
|
||||
|
||||
g_btdm_controller_status = ESP_BT_CONTROLLER_STATUS_IDLE;
|
||||
|
|
@ -3305,7 +3309,7 @@ error:
|
|||
#endif
|
||||
|
||||
#if CONFIG_ESPRESSIF_WIFI_BT_COEXIST
|
||||
coex_disable();
|
||||
coex_disable();
|
||||
#endif
|
||||
if (g_lp_stat.phy_enabled)
|
||||
{
|
||||
|
|
@ -3476,6 +3480,7 @@ void esp_vhci_host_send_packet(uint8_t *data, uint16_t len)
|
|||
int esp_vhci_register_callback(const esp_vhci_host_callback_t *callback)
|
||||
{
|
||||
int ret = ERROR;
|
||||
|
||||
if (g_btdm_controller_status != ESP_BT_CONTROLLER_STATUS_ENABLED)
|
||||
{
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -574,6 +574,7 @@ uint32_t esp_coex_common_clk_slowclk_cal_get_wrapper(void)
|
|||
if (GET_PERI_REG_MASK(SYSTEM_BT_LPCK_DIV_FRAC_REG, SYSTEM_LPCLK_SEL_XTAL))
|
||||
{
|
||||
uint64_t time_per_us = 1000000ULL;
|
||||
|
||||
return (((time_per_us << RTC_CLK_CAL_FRACT) / (MHZ)) >>
|
||||
(RTC_CLK_CAL_FRACT - SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1716,6 +1716,7 @@ static void esp_log_write_wrapper(unsigned int level,
|
|||
if (level <= max_level)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
esp_log_writev(level, tag, format, list);
|
||||
va_end(list);
|
||||
|
|
|
|||
|
|
@ -1703,6 +1703,7 @@ static void esp_log_write_wrapper(unsigned int level,
|
|||
if (level <= max_level)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
esp_log_writev(level, tag, format, list);
|
||||
va_end(list);
|
||||
|
|
|
|||
|
|
@ -1016,6 +1016,7 @@ static void *semphr_create_wrapper(uint32_t max, uint32_t init)
|
|||
static void semphr_delete_wrapper(void *semphr)
|
||||
{
|
||||
struct bt_sem_s *bt_sem = (struct bt_sem_s *)semphr;
|
||||
|
||||
sem_destroy(&bt_sem->sem);
|
||||
kmm_free(bt_sem);
|
||||
}
|
||||
|
|
@ -1533,6 +1534,7 @@ static int32_t task_create_wrapper(void *task_func, const char *name,
|
|||
static void task_delete_wrapper(void *task_handle)
|
||||
{
|
||||
pid_t pid = (pid_t)((uintptr_t)task_handle);
|
||||
|
||||
kthread_delete(pid);
|
||||
}
|
||||
|
||||
|
|
@ -1702,6 +1704,7 @@ static uint32_t IRAM_ATTR btdm_lpcycles_2_us(uint32_t cycles)
|
|||
*/
|
||||
|
||||
uint64_t us = (uint64_t)g_btdm_lpcycle_us * cycles;
|
||||
|
||||
us = (us + (1 << (g_btdm_lpcycle_us_frac - 1))) >> g_btdm_lpcycle_us_frac;
|
||||
return (uint32_t)us;
|
||||
}
|
||||
|
|
@ -1728,6 +1731,7 @@ static uint32_t IRAM_ATTR btdm_us_2_lpcycles(uint32_t us)
|
|||
*/
|
||||
|
||||
uint64_t cycles;
|
||||
|
||||
cycles = ((uint64_t)(us) << g_btdm_lpcycle_us_frac) / g_btdm_lpcycle_us;
|
||||
return (uint32_t)cycles;
|
||||
}
|
||||
|
|
@ -2493,6 +2497,7 @@ static void IRAM_ATTR cause_sw_intr(void *arg)
|
|||
/* just convert void * to int, because the width is the same */
|
||||
|
||||
uint32_t intr_no = (uint32_t)arg;
|
||||
|
||||
XTHAL_SET_INTSET((1 << intr_no));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ static off_t himem_chardev_seek(struct file *filep,
|
|||
merr("invalid parameter: whence:%d\n", whence);
|
||||
nxmutex_unlock(&lock);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
filep->f_pos = priv->offset;
|
||||
nxmutex_unlock(&lock);
|
||||
return priv->offset;
|
||||
|
|
@ -251,6 +251,7 @@ static const struct file_operations g_fops =
|
|||
int himem_chardev_init(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
ret = esp_himem_init();
|
||||
if (ret != 0)
|
||||
{
|
||||
|
|
@ -275,6 +276,7 @@ int himem_chardev_init(void)
|
|||
int himem_chardev_exit(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
nxmutex_destroy(&lock);
|
||||
|
||||
ret = esp_himem_free_map_range(g_range_handle);
|
||||
|
|
@ -287,6 +289,7 @@ int himem_chardev_register(char *name, size_t size)
|
|||
int ret = 0;
|
||||
struct himem_chardev_s *dev =
|
||||
kmm_malloc(sizeof(struct himem_chardev_s));
|
||||
|
||||
if (dev == NULL)
|
||||
{
|
||||
merr("Failed to malloc.\n");
|
||||
|
|
@ -296,6 +299,7 @@ int himem_chardev_register(char *name, size_t size)
|
|||
/* 32KB Alignment */
|
||||
|
||||
size_t mod = size % ESP_HIMEM_BLKSZ;
|
||||
|
||||
if (mod != 0)
|
||||
{
|
||||
size += (ESP_HIMEM_BLKSZ - mod);
|
||||
|
|
@ -352,6 +356,7 @@ int himem_chardev_unregister(char *name)
|
|||
int success = 0;
|
||||
struct himem_chardev_s *dev;
|
||||
struct himem_chardev_s *tmp;
|
||||
|
||||
nxmutex_lock(&lock);
|
||||
list_for_every_entry_safe(&g_himem_chardev_list, dev,
|
||||
tmp, struct himem_chardev_s, node)
|
||||
|
|
|
|||
|
|
@ -2690,6 +2690,7 @@ static void esp_log_write_wrapper(unsigned int level,
|
|||
if (level <= max_level)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
esp_log_writev(level, tag, format, list);
|
||||
va_end(list);
|
||||
|
|
@ -2757,6 +2758,7 @@ static void *esp_realloc_internal(void *ptr, size_t size)
|
|||
void *old_ptr = ptr;
|
||||
void *new_ptr = NULL;
|
||||
size_t old_size = 0;
|
||||
|
||||
if (size == 0)
|
||||
{
|
||||
kmm_free(ptr);
|
||||
|
|
@ -2806,6 +2808,7 @@ static void *esp_calloc_internal(size_t n, size_t size)
|
|||
return xtensa_imm_calloc(n, size);
|
||||
#else
|
||||
void *ptr = kmm_calloc(n, size);
|
||||
|
||||
if (ptr != NULL)
|
||||
{
|
||||
if (esp32_ptr_extram(ptr))
|
||||
|
|
@ -2841,6 +2844,7 @@ static void *esp_zalloc_internal(size_t size)
|
|||
return xtensa_imm_zalloc(size);
|
||||
#else
|
||||
void *ptr = kmm_zalloc(size);
|
||||
|
||||
if (ptr != NULL)
|
||||
{
|
||||
if (esp32_ptr_extram(ptr))
|
||||
|
|
|
|||
|
|
@ -1792,7 +1792,7 @@ static void IRAM_ATTR esp_empty_wrapper(void)
|
|||
|
||||
static void esp_phy_enable_wrapper(void)
|
||||
{
|
||||
esp_phy_enable(PHY_MODEM_WIFI);
|
||||
esp_phy_enable(PHY_MODEM_WIFI);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1812,7 +1812,7 @@ static void esp_phy_enable_wrapper(void)
|
|||
|
||||
static void esp_phy_disable_wrapper(void)
|
||||
{
|
||||
esp_phy_disable(PHY_MODEM_WIFI);
|
||||
esp_phy_disable(PHY_MODEM_WIFI);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -2458,10 +2458,11 @@ static uint32_t esp_clk_slowclk_cal_get_wrapper(void)
|
|||
if (REG_GET_FIELD(SYSTEM_BT_LPCK_DIV_FRAC_REG, SYSTEM_LPCLK_SEL_XTAL))
|
||||
{
|
||||
uint64_t time_per_us = 1000000ULL;
|
||||
|
||||
return (((time_per_us << RTC_CLK_CAL_FRACT) / (MHZ)) >>
|
||||
(RTC_CLK_CAL_FRACT - SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH));
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
return (getreg32(RTC_SLOW_CLK_CAL_REG) >>
|
||||
(RTC_CLK_CAL_FRACT - SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH));
|
||||
|
|
@ -2541,6 +2542,7 @@ static void esp_log_write_wrapper(unsigned int level,
|
|||
if (level <= max_level)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
esp_log_writev(level, tag, format, list);
|
||||
va_end(list);
|
||||
|
|
@ -2608,6 +2610,7 @@ static void *esp_realloc_internal(void *ptr, size_t size)
|
|||
void *old_ptr = ptr;
|
||||
void *new_ptr = NULL;
|
||||
size_t old_size = 0;
|
||||
|
||||
if (size == 0)
|
||||
{
|
||||
kmm_free(ptr);
|
||||
|
|
@ -2657,6 +2660,7 @@ static void *esp_calloc_internal(size_t n, size_t size)
|
|||
return xtensa_imm_calloc(n, size);
|
||||
#else
|
||||
void *ptr = kmm_calloc(n, size);
|
||||
|
||||
if (ptr != NULL)
|
||||
{
|
||||
if (esp32s2_ptr_extram(ptr))
|
||||
|
|
@ -2692,6 +2696,7 @@ static void *esp_zalloc_internal(size_t size)
|
|||
return xtensa_imm_zalloc(size);
|
||||
#else
|
||||
void *ptr = kmm_zalloc(size);
|
||||
|
||||
if (ptr != NULL)
|
||||
{
|
||||
if (esp32s2_ptr_extram(ptr))
|
||||
|
|
|
|||
|
|
@ -897,6 +897,7 @@ static void *semphr_create_wrapper(uint32_t max, uint32_t init)
|
|||
static void semphr_delete_wrapper(void *semphr)
|
||||
{
|
||||
struct bt_sem_s *bt_sem = (struct bt_sem_s *)semphr;
|
||||
|
||||
nxsem_destroy(&bt_sem->sem);
|
||||
kmm_free(bt_sem);
|
||||
}
|
||||
|
|
@ -1410,6 +1411,7 @@ static int task_create_wrapper(void *task_func, const char *name,
|
|||
static void task_delete_wrapper(void *task_handle)
|
||||
{
|
||||
pid_t pid = (pid_t)((uintptr_t)task_handle);
|
||||
|
||||
kthread_delete(pid);
|
||||
}
|
||||
|
||||
|
|
@ -1449,6 +1451,7 @@ static bool IRAM_ATTR is_in_isr_wrapper(void)
|
|||
static void *malloc_wrapper(size_t size)
|
||||
{
|
||||
void * p = kmm_malloc(size);
|
||||
|
||||
DEBUGASSERT(p);
|
||||
|
||||
return p;
|
||||
|
|
@ -2561,6 +2564,7 @@ static esp_err_t btdm_low_power_mode_init(esp_bt_controller_config_t *cfg)
|
|||
static void btdm_controller_mem_init(void)
|
||||
{
|
||||
extern void btdm_controller_rom_data_init(void);
|
||||
|
||||
btdm_controller_rom_data_init();
|
||||
}
|
||||
|
||||
|
|
@ -2592,8 +2596,8 @@ static void bt_controller_deinit_internal(void)
|
|||
|
||||
if (g_osi_funcs_p != NULL)
|
||||
{
|
||||
free(g_osi_funcs_p);
|
||||
g_osi_funcs_p = NULL;
|
||||
free(g_osi_funcs_p);
|
||||
g_osi_funcs_p = NULL;
|
||||
}
|
||||
|
||||
g_btdm_controller_status = ESP_BT_CONTROLLER_STATUS_IDLE;
|
||||
|
|
@ -3296,7 +3300,7 @@ int esp32s3_bt_controller_enable(esp_bt_mode_t mode)
|
|||
|
||||
if (g_lp_cntl.enable)
|
||||
{
|
||||
btdm_controller_enable_sleep(true);
|
||||
btdm_controller_enable_sleep(true);
|
||||
}
|
||||
|
||||
/* Disable pll track by default in BLE controller on ESP32-C3 and
|
||||
|
|
@ -3342,7 +3346,7 @@ error:
|
|||
#endif
|
||||
|
||||
#if CONFIG_ESPRESSIF_WIFI_BT_COEXIST
|
||||
coex_disable();
|
||||
coex_disable();
|
||||
#endif
|
||||
if (g_lp_stat.phy_enabled)
|
||||
{
|
||||
|
|
@ -3513,6 +3517,7 @@ void esp32s3_vhci_host_send_packet(uint8_t *data, uint16_t len)
|
|||
int esp32s3_vhci_register_callback(const esp_vhci_host_callback_t *callback)
|
||||
{
|
||||
int ret = ERROR;
|
||||
|
||||
if (g_btdm_controller_status != ESP_BT_CONTROLLER_STATUS_ENABLED)
|
||||
{
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -1937,8 +1937,8 @@ static void wifi_apb80m_release(void)
|
|||
|
||||
static void esp_phy_enable_wrapper(void)
|
||||
{
|
||||
esp_phy_enable(PHY_MODEM_WIFI);
|
||||
phy_wifi_enable_set(1);
|
||||
esp_phy_enable(PHY_MODEM_WIFI);
|
||||
phy_wifi_enable_set(1);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1959,8 +1959,8 @@ static void esp_phy_enable_wrapper(void)
|
|||
|
||||
static void esp_phy_disable_wrapper(void)
|
||||
{
|
||||
phy_wifi_enable_set(0);
|
||||
esp_phy_disable(PHY_MODEM_WIFI);
|
||||
phy_wifi_enable_set(0);
|
||||
esp_phy_disable(PHY_MODEM_WIFI);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -2630,10 +2630,11 @@ static uint32_t esp_clk_slowclk_cal_get_wrapper(void)
|
|||
if (REG_GET_FIELD(SYSTEM_BT_LPCK_DIV_FRAC_REG, SYSTEM_LPCLK_SEL_XTAL))
|
||||
{
|
||||
uint64_t time_per_us = 1000000ULL;
|
||||
|
||||
return (((time_per_us << RTC_CLK_CAL_FRACT) / (MHZ)) >>
|
||||
(RTC_CLK_CAL_FRACT - SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH));
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
return (getreg32(RTC_SLOW_CLK_CAL_REG) >>
|
||||
(RTC_CLK_CAL_FRACT - SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH));
|
||||
|
|
@ -2713,6 +2714,7 @@ static void esp_log_write_wrapper(unsigned int level,
|
|||
if (level <= max_level)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
esp_log_writev(level, tag, format, list);
|
||||
va_end(list);
|
||||
|
|
@ -2780,6 +2782,7 @@ static void *esp_realloc_internal(void *ptr, size_t size)
|
|||
void *old_ptr = ptr;
|
||||
void *new_ptr = NULL;
|
||||
size_t old_size = 0;
|
||||
|
||||
if (size == 0)
|
||||
{
|
||||
kmm_free(ptr);
|
||||
|
|
@ -2829,6 +2832,7 @@ static void *esp_calloc_internal(size_t n, size_t size)
|
|||
return xtensa_imm_calloc(n, size);
|
||||
#else
|
||||
void *ptr = kmm_calloc(n, size);
|
||||
|
||||
if (ptr != NULL)
|
||||
{
|
||||
if (esp32s3_ptr_extram(ptr))
|
||||
|
|
@ -2864,6 +2868,7 @@ static void *esp_zalloc_internal(size_t size)
|
|||
return xtensa_imm_zalloc(size);
|
||||
#else
|
||||
void *ptr = kmm_zalloc(size);
|
||||
|
||||
if (ptr != NULL)
|
||||
{
|
||||
if (esp32s3_ptr_extram(ptr))
|
||||
|
|
|
|||
|
|
@ -629,6 +629,7 @@ static int nvs_flash_block_move(FAR struct nvs_fs *fs,
|
|||
while (len)
|
||||
{
|
||||
size_t bytes_to_copy = MIN(buf_size, len);
|
||||
|
||||
rc = nvs_flash_rd(fs, addr, buf, bytes_to_copy);
|
||||
if (rc)
|
||||
{
|
||||
|
|
@ -650,6 +651,7 @@ static int nvs_flash_block_move(FAR struct nvs_fs *fs,
|
|||
|
||||
uint32_t end_addr = MIN(data_end, addr + bytes_to_copy);
|
||||
uint32_t begin_addr = MAX(data_begin, addr);
|
||||
|
||||
data_crc8 = crc8part(buf + (begin_addr - addr),
|
||||
end_addr - begin_addr, data_crc8);
|
||||
}
|
||||
|
|
@ -853,6 +855,7 @@ static int nvs_flash_wrt_entry(FAR struct nvs_fs *fs, uint32_t id,
|
|||
FAR const void *data, size_t len)
|
||||
{
|
||||
size_t ate_size = nvs_ate_size(fs);
|
||||
|
||||
NVS_ATE(entry, ate_size);
|
||||
uint8_t buf[NVS_BUFFER_SIZE(fs)];
|
||||
uint16_t copy_len = 0;
|
||||
|
|
@ -947,6 +950,7 @@ static int nvs_recover_last_ate(FAR struct nvs_fs *fs,
|
|||
FAR uint32_t *addr)
|
||||
{
|
||||
size_t ate_size = nvs_ate_size(fs);
|
||||
|
||||
NVS_ATE(end_ate, ate_size);
|
||||
uint32_t data_end_addr;
|
||||
uint32_t ate_end_addr;
|
||||
|
|
@ -1001,6 +1005,7 @@ static int nvs_prev_ate(FAR struct nvs_fs *fs, FAR uint32_t *addr,
|
|||
FAR struct nvs_ate *ate)
|
||||
{
|
||||
size_t ate_size = nvs_ate_size(fs);
|
||||
|
||||
NVS_ATE(close_ate, ate_size);
|
||||
int rc;
|
||||
|
||||
|
|
@ -1088,6 +1093,7 @@ static void nvs_block_advance(FAR struct nvs_fs *fs, FAR uint32_t *addr)
|
|||
static int nvs_block_close(FAR struct nvs_fs *fs)
|
||||
{
|
||||
size_t ate_size = nvs_ate_size(fs);
|
||||
|
||||
NVS_ATE(close_ate, ate_size);
|
||||
int rc;
|
||||
|
||||
|
|
@ -1123,6 +1129,7 @@ static int nvs_block_close(FAR struct nvs_fs *fs)
|
|||
static int nvs_add_gc_done_ate(FAR struct nvs_fs *fs)
|
||||
{
|
||||
size_t ate_size = nvs_ate_size(fs);
|
||||
|
||||
NVS_ATE(gc_done_ate, ate_size);
|
||||
|
||||
finfo("Adding gc done ate at %" PRIx32 "\n",
|
||||
|
|
@ -1144,6 +1151,7 @@ static int nvs_add_gc_done_ate(FAR struct nvs_fs *fs)
|
|||
static int nvs_expire_ate(FAR struct nvs_fs *fs, uint32_t addr)
|
||||
{
|
||||
uint8_t expired[NVS_BUFFER_SIZE(fs)];
|
||||
|
||||
memset(expired, ~fs->erasestate, fs->progsize);
|
||||
|
||||
return nvs_flash_wrt(fs, addr + nvs_align_up(fs, sizeof(struct nvs_ate)),
|
||||
|
|
@ -1163,6 +1171,7 @@ static int nvs_expire_ate(FAR struct nvs_fs *fs, uint32_t addr)
|
|||
static int nvs_gc(FAR struct nvs_fs *fs)
|
||||
{
|
||||
size_t ate_size = nvs_ate_size(fs);
|
||||
|
||||
NVS_ATE(close_ate, ate_size);
|
||||
NVS_ATE(gc_ate, ate_size);
|
||||
uint32_t gc_prev_addr;
|
||||
|
|
@ -1328,6 +1337,7 @@ static int nvs_startup(FAR struct nvs_fs *fs)
|
|||
fs->progsize = geo.blocksize;
|
||||
|
||||
size_t ate_size = nvs_ate_size(fs);
|
||||
|
||||
NVS_ATE(second_ate, ate_size);
|
||||
NVS_ATE(last_ate, ate_size);
|
||||
|
||||
|
|
@ -1477,6 +1487,7 @@ static int nvs_startup(FAR struct nvs_fs *fs)
|
|||
*/
|
||||
|
||||
bool gc_done_marker = false;
|
||||
|
||||
NVS_ATE(gc_done_ate, ate_size);
|
||||
|
||||
addr = fs->ate_wra + ate_size;
|
||||
|
|
@ -1825,6 +1836,7 @@ static ssize_t nvs_write(FAR struct nvs_fs *fs,
|
|||
size_t data_size;
|
||||
size_t key_size;
|
||||
size_t ate_size = nvs_ate_size(fs);
|
||||
|
||||
NVS_ATE(wlk_ate, ate_size);
|
||||
uint32_t wlk_addr;
|
||||
uint32_t rd_addr;
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ static int set_baud_rate(l86xxx_dev_s *dev, int br)
|
|||
{
|
||||
struct termios opt;
|
||||
int err;
|
||||
|
||||
err = file_ioctl(&dev->uart, TCGETS, &opt);
|
||||
if (err < 0)
|
||||
{
|
||||
|
|
@ -175,17 +176,17 @@ static int set_baud_rate(l86xxx_dev_s *dev, int br)
|
|||
case 38400:
|
||||
case 57600:
|
||||
case 115200:
|
||||
{
|
||||
cfsetispeed(&opt, br);
|
||||
cfsetospeed(&opt, br);
|
||||
break;
|
||||
}
|
||||
{
|
||||
cfsetispeed(&opt, br);
|
||||
cfsetospeed(&opt, br);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
snerr("Invalid baud rate, %ld\n", br);
|
||||
return -EINVAL;
|
||||
}
|
||||
{
|
||||
snerr("Invalid baud rate, %ld\n", br);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
err = file_ioctl(&dev->uart, TCSETS, &opt);
|
||||
|
|
@ -196,8 +197,8 @@ static int set_baud_rate(l86xxx_dev_s *dev, int br)
|
|||
}
|
||||
|
||||
/* These calls to read_line will flush out the buffer
|
||||
after the baud rate change
|
||||
*/
|
||||
* after the baud rate change
|
||||
*/
|
||||
|
||||
for (int i = 0; i < 5; ++i)
|
||||
{
|
||||
|
|
@ -247,43 +248,43 @@ static int send_command(l86xxx_dev_s *dev,
|
|||
uint8_t checksum;
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
case CMD_HOT_START:
|
||||
case CMD_WARM_START:
|
||||
case CMD_COLD_START:
|
||||
case CMD_FULL_COLD_START:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d", cmd);
|
||||
break;
|
||||
}
|
||||
case CMD_HOT_START:
|
||||
case CMD_WARM_START:
|
||||
case CMD_COLD_START:
|
||||
case CMD_FULL_COLD_START:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d", cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
case CMD_STANDBY_MODE:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d,0", cmd);
|
||||
break;
|
||||
}
|
||||
case CMD_STANDBY_MODE:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d,0", cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
case SET_NMEA_BAUDRATE:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d,%d", cmd, (int)arg);
|
||||
break;
|
||||
}
|
||||
case SET_NMEA_BAUDRATE:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d,%d", cmd, (int)arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case SET_POS_FIX:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d,%d", cmd, (int)arg);
|
||||
break;
|
||||
}
|
||||
case SET_POS_FIX:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d,%d", cmd, (int)arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case FR_MODE:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d,%d", cmd, (int)arg);
|
||||
break;
|
||||
}
|
||||
case FR_MODE:
|
||||
{
|
||||
bw1 = snprintf(buf, sizeof(buf), "$PMTK%d,%d", cmd, (int)arg);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
return -ENOSYS;
|
||||
}
|
||||
default:
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
sninfo("Sending command: %s to L86", buf);
|
||||
checksum = minmea_checksum(buf);
|
||||
|
|
@ -292,10 +293,10 @@ static int send_command(l86xxx_dev_s *dev,
|
|||
nxmutex_lock(&dev->devlock);
|
||||
err = file_write(&dev->uart, buf, bw1 + bw2);
|
||||
if (err < 0)
|
||||
{
|
||||
snerr("Could not send command to device\n");
|
||||
goto early_ret;
|
||||
}
|
||||
{
|
||||
snerr("Could not send command to device\n");
|
||||
goto early_ret;
|
||||
}
|
||||
|
||||
/* These commands do not send ACKs so just return after they've been
|
||||
* written
|
||||
|
|
@ -315,15 +316,15 @@ static int send_command(l86xxx_dev_s *dev,
|
|||
*/
|
||||
|
||||
if (cmd == SET_NMEA_BAUDRATE)
|
||||
{
|
||||
{
|
||||
#ifdef CONFIG_SERIAL_TERMIOS
|
||||
nxsched_usleep(20000); /* Should wait for a bit before changing interface baud rate */
|
||||
err = set_baud_rate(dev, (int)arg);
|
||||
nxsched_usleep(20000); /* Should wait for a bit before changing interface baud rate */
|
||||
err = set_baud_rate(dev, (int)arg);
|
||||
#else
|
||||
err = -EINVAL;
|
||||
err = -EINVAL;
|
||||
#endif
|
||||
goto early_ret;
|
||||
}
|
||||
goto early_ret;
|
||||
}
|
||||
|
||||
/* Some commands will send ACKs,
|
||||
* wait for them here before unlocking the mutex
|
||||
|
|
@ -358,24 +359,24 @@ static int send_command(l86xxx_dev_s *dev,
|
|||
sninfo("ACK received!\n");
|
||||
|
||||
/* Flag num is always in position 13 of ack, subtract by '0'
|
||||
to obtain return val
|
||||
*/
|
||||
* to obtain return val
|
||||
*/
|
||||
|
||||
switch (dev->buffer[13] - '0')
|
||||
{
|
||||
case 1:
|
||||
err = -ENOSYS;
|
||||
break;
|
||||
case 2:
|
||||
err = -EIO;
|
||||
break;
|
||||
case 3:
|
||||
err = 0;
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
break;
|
||||
case 1:
|
||||
err = -ENOSYS;
|
||||
break;
|
||||
case 2:
|
||||
err = -EIO;
|
||||
break;
|
||||
case 3:
|
||||
err = 0;
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
early_ret:
|
||||
|
|
@ -439,41 +440,42 @@ static int l86xxx_control(FAR struct gnss_lowerhalf_s *lower,
|
|||
{
|
||||
FAR l86xxx_dev_s *dev = container_of(lower, FAR l86xxx_dev_s, lower);
|
||||
L86XXX_PMTK_COMMAND pmtk_cmd;
|
||||
switch (cmd)
|
||||
{
|
||||
case SNIOC_HOT_START:
|
||||
pmtk_cmd = CMD_HOT_START;
|
||||
break;
|
||||
case SNIOC_WARM_START:
|
||||
pmtk_cmd = CMD_WARM_START;
|
||||
break;
|
||||
case SNIOC_COLD_START:
|
||||
pmtk_cmd = CMD_COLD_START;
|
||||
break;
|
||||
case SNIOC_FULL_COLD_START:
|
||||
pmtk_cmd = CMD_FULL_COLD_START;
|
||||
break;
|
||||
case SNIOC_SET_INTERVAL:
|
||||
pmtk_cmd = SET_POS_FIX;
|
||||
break;
|
||||
case SNIOC_SET_BAUD:
|
||||
pmtk_cmd = SET_NMEA_BAUDRATE;
|
||||
break;
|
||||
case SNIOC_SET_OPERATIONAL_MODE:
|
||||
if (arg == STANDBY)
|
||||
{
|
||||
pmtk_cmd = CMD_STANDBY_MODE;
|
||||
}
|
||||
else
|
||||
{
|
||||
pmtk_cmd = FR_MODE;
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
snerr("Unsupported command\n");
|
||||
return -ENOSYS;
|
||||
}
|
||||
switch (cmd)
|
||||
{
|
||||
case SNIOC_HOT_START:
|
||||
pmtk_cmd = CMD_HOT_START;
|
||||
break;
|
||||
case SNIOC_WARM_START:
|
||||
pmtk_cmd = CMD_WARM_START;
|
||||
break;
|
||||
case SNIOC_COLD_START:
|
||||
pmtk_cmd = CMD_COLD_START;
|
||||
break;
|
||||
case SNIOC_FULL_COLD_START:
|
||||
pmtk_cmd = CMD_FULL_COLD_START;
|
||||
break;
|
||||
case SNIOC_SET_INTERVAL:
|
||||
pmtk_cmd = SET_POS_FIX;
|
||||
break;
|
||||
case SNIOC_SET_BAUD:
|
||||
pmtk_cmd = SET_NMEA_BAUDRATE;
|
||||
break;
|
||||
case SNIOC_SET_OPERATIONAL_MODE:
|
||||
if (arg == STANDBY)
|
||||
{
|
||||
pmtk_cmd = CMD_STANDBY_MODE;
|
||||
}
|
||||
else
|
||||
{
|
||||
pmtk_cmd = FR_MODE;
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
snerr("Unsupported command\n");
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
return send_command(dev, pmtk_cmd, arg);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1019,6 +1019,7 @@ static int lis2mdl_set_calibvalue(FAR struct sensor_lowerhalf_s *lower,
|
|||
/* Get user calibration values */
|
||||
|
||||
FAR float *vals = (float *)(arg);
|
||||
|
||||
if (vals == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
|
|
@ -1061,6 +1062,7 @@ static int lis2mdl_fetch(FAR struct sensor_lowerhalf_s *lower,
|
|||
{
|
||||
FAR struct lis2mdl_dev_s *dev =
|
||||
container_of(lower, FAR struct lis2mdl_dev_s, lower);
|
||||
|
||||
return lis2mdl_push_data(dev);
|
||||
}
|
||||
#endif /* CONFIG_SENSORS_LIS2MDL_FETCH */
|
||||
|
|
@ -1085,63 +1087,64 @@ static int lis2mdl_control(FAR struct sensor_lowerhalf_s *lower,
|
|||
|
||||
switch (cmd)
|
||||
{
|
||||
/* Get the WHOAMI register value */
|
||||
/* Get the WHOAMI register value */
|
||||
|
||||
case SNIOC_WHO_AM_I:
|
||||
{
|
||||
uint8_t *id = ((uint8_t *)(arg));
|
||||
if (id == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
case SNIOC_WHO_AM_I:
|
||||
{
|
||||
uint8_t *id = ((uint8_t *)(arg));
|
||||
|
||||
err = lis2mdl_read_reg(dev, REG_WHO_AM_I, id, 1);
|
||||
}
|
||||
break;
|
||||
if (id == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Set low power mode if `arg` is truthy */
|
||||
err = lis2mdl_read_reg(dev, REG_WHO_AM_I, id, 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case SNIOC_SET_POWER_MODE:
|
||||
{
|
||||
err = lis2mdl_low_power(dev, arg);
|
||||
}
|
||||
break;
|
||||
/* Set low power mode if `arg` is truthy */
|
||||
|
||||
/* Soft reset */
|
||||
case SNIOC_SET_POWER_MODE:
|
||||
{
|
||||
err = lis2mdl_low_power(dev, arg);
|
||||
}
|
||||
break;
|
||||
|
||||
case SNIOC_RESET:
|
||||
{
|
||||
err = lis2mdl_reset(dev);
|
||||
}
|
||||
break;
|
||||
/* Soft reset */
|
||||
|
||||
/* Reboot memory contents */
|
||||
case SNIOC_RESET:
|
||||
{
|
||||
err = lis2mdl_reset(dev);
|
||||
}
|
||||
break;
|
||||
|
||||
case SNIOC_SENSOR_OFF:
|
||||
{
|
||||
err = lis2mdl_reboot(dev);
|
||||
}
|
||||
break;
|
||||
/* Reboot memory contents */
|
||||
|
||||
/* Enable/disable temperature compensation */
|
||||
case SNIOC_SENSOR_OFF:
|
||||
{
|
||||
err = lis2mdl_reboot(dev);
|
||||
}
|
||||
break;
|
||||
|
||||
case SNIOC_SET_TEMP_OFFSET:
|
||||
{
|
||||
err = lis2mdl_temp_compensation(dev, arg);
|
||||
}
|
||||
break;
|
||||
/* Enable/disable temperature compensation */
|
||||
|
||||
case SNIOC_LPF:
|
||||
{
|
||||
err = lis2mdl_enable_lpf(dev, arg);
|
||||
}
|
||||
break;
|
||||
case SNIOC_SET_TEMP_OFFSET:
|
||||
{
|
||||
err = lis2mdl_temp_compensation(dev, arg);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
err = -EINVAL;
|
||||
snerr("Unknown command for LIS2MDL: %d\n", cmd);
|
||||
break;
|
||||
case SNIOC_LPF:
|
||||
{
|
||||
err = lis2mdl_enable_lpf(dev, arg);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
err = -EINVAL;
|
||||
snerr("Unknown command for LIS2MDL: %d\n", cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
nxmutex_unlock(&dev->devlock);
|
||||
|
|
@ -1159,6 +1162,7 @@ static int lis2mdl_control(FAR struct sensor_lowerhalf_s *lower,
|
|||
static void lis2mdl_worker(FAR void *arg)
|
||||
{
|
||||
FAR struct lis2mdl_dev_s *dev = (FAR struct lis2mdl_dev_s *)(arg);
|
||||
|
||||
DEBUGASSERT(dev != NULL);
|
||||
lis2mdl_push_data(dev);
|
||||
}
|
||||
|
|
@ -1175,6 +1179,7 @@ static int lis2mdl_int_handler(int irq, FAR void *context, FAR void *arg)
|
|||
{
|
||||
FAR struct lis2mdl_dev_s *dev = (FAR struct lis2mdl_dev_s *)(arg);
|
||||
int err;
|
||||
|
||||
(void)context;
|
||||
|
||||
DEBUGASSERT(dev != NULL);
|
||||
|
|
@ -1366,9 +1371,9 @@ int lis2mdl_register(FAR struct i2c_master_s *i2c, int devno, uint8_t addr,
|
|||
|
||||
if (err < 0)
|
||||
{
|
||||
sensor_unreg:
|
||||
sensor_unreg:
|
||||
sensor_unregister(&priv->lower, devno);
|
||||
del_sem:
|
||||
del_sem:
|
||||
nxsem_destroy(&priv->run);
|
||||
nxmutex_destroy(&priv->devlock);
|
||||
kmm_free(priv);
|
||||
|
|
|
|||
|
|
@ -520,6 +520,7 @@ static int gyro_set_fsr(FAR struct lsm6dso32_dev_s *dev,
|
|||
enum lsm6dso32_fsr_gyro_e fsr)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = lsm6dso32_set_bits(dev, CTRL2_G, (fsr & 0x7) << 1, 0x0c);
|
||||
|
||||
if (err < 0)
|
||||
|
|
@ -772,6 +773,7 @@ static int gyro_int_handler(int irq, FAR void *context, FAR void *arg)
|
|||
{
|
||||
FAR struct lsm6dso32_dev_s *dev = (FAR struct lsm6dso32_dev_s *)(arg);
|
||||
int err;
|
||||
|
||||
(void)(context);
|
||||
|
||||
DEBUGASSERT(arg != NULL);
|
||||
|
|
@ -800,6 +802,7 @@ static int accel_int_handler(int irq, FAR void *context, FAR void *arg)
|
|||
{
|
||||
FAR struct lsm6dso32_dev_s *dev = (FAR struct lsm6dso32_dev_s *)(arg);
|
||||
int err;
|
||||
|
||||
(void)(context);
|
||||
|
||||
DEBUGASSERT(arg != NULL);
|
||||
|
|
@ -1569,79 +1572,80 @@ static int lsm6dso32_control(FAR struct sensor_lowerhalf_s *lower,
|
|||
{
|
||||
/* Read WHO_AM_I value into 8-bit unsigned integer buffer */
|
||||
|
||||
case SNIOC_WHO_AM_I:
|
||||
{
|
||||
uint8_t *id = (uint8_t *)(arg);
|
||||
if (id == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
case SNIOC_WHO_AM_I:
|
||||
{
|
||||
uint8_t *id = (uint8_t *)(arg);
|
||||
|
||||
err = lsm6dso32_read_bytes(dev, WHO_AM_I, id, sizeof(uint8_t));
|
||||
}
|
||||
break;
|
||||
if (id == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
case SNIOC_SETFULLSCALE:
|
||||
{
|
||||
/* Accelerometer FSR */
|
||||
err = lsm6dso32_read_bytes(dev, WHO_AM_I, id, sizeof(uint8_t));
|
||||
}
|
||||
break;
|
||||
|
||||
if (lower->type == SENSOR_TYPE_ACCELEROMETER)
|
||||
{
|
||||
switch (arg)
|
||||
{
|
||||
case 4:
|
||||
err = accel_set_fsr(dev, LSM6DSO32_FSR_XL_4G);
|
||||
break;
|
||||
case 8:
|
||||
err = accel_set_fsr(dev, LSM6DSO32_FSR_XL_8G);
|
||||
break;
|
||||
case 16:
|
||||
err = accel_set_fsr(dev, LSM6DSO32_FSR_XL_16G);
|
||||
break;
|
||||
case 32:
|
||||
err = accel_set_fsr(dev, LSM6DSO32_FSR_XL_32G);
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
case SNIOC_SETFULLSCALE:
|
||||
{
|
||||
/* Accelerometer FSR */
|
||||
|
||||
/* Gyroscope FSR */
|
||||
if (lower->type == SENSOR_TYPE_ACCELEROMETER)
|
||||
{
|
||||
switch (arg)
|
||||
{
|
||||
case 4:
|
||||
err = accel_set_fsr(dev, LSM6DSO32_FSR_XL_4G);
|
||||
break;
|
||||
case 8:
|
||||
err = accel_set_fsr(dev, LSM6DSO32_FSR_XL_8G);
|
||||
break;
|
||||
case 16:
|
||||
err = accel_set_fsr(dev, LSM6DSO32_FSR_XL_16G);
|
||||
break;
|
||||
case 32:
|
||||
err = accel_set_fsr(dev, LSM6DSO32_FSR_XL_32G);
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
else if (lower->type == SENSOR_TYPE_GYROSCOPE)
|
||||
{
|
||||
switch (arg)
|
||||
{
|
||||
case 125:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_125DPS);
|
||||
break;
|
||||
case 250:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_250DPS);
|
||||
break;
|
||||
case 500:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_500DPS);
|
||||
break;
|
||||
case 1000:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_1000DPS);
|
||||
break;
|
||||
case 2000:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_2000DPS);
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
/* Gyroscope FSR */
|
||||
|
||||
default:
|
||||
{
|
||||
err = -EINVAL;
|
||||
}
|
||||
break;
|
||||
else if (lower->type == SENSOR_TYPE_GYROSCOPE)
|
||||
{
|
||||
switch (arg)
|
||||
{
|
||||
case 125:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_125DPS);
|
||||
break;
|
||||
case 250:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_250DPS);
|
||||
break;
|
||||
case 500:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_500DPS);
|
||||
break;
|
||||
case 1000:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_1000DPS);
|
||||
break;
|
||||
case 2000:
|
||||
err = gyro_set_fsr(dev, LSM6DSO32_FSR_GY_2000DPS);
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
err = -EINVAL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
nxmutex_unlock(&dev->devlock);
|
||||
|
|
@ -2020,17 +2024,17 @@ int lsm6dso32_register(FAR struct i2c_master_s *i2c, uint8_t addr,
|
|||
|
||||
if (err < 0)
|
||||
{
|
||||
unreg_gyro_handler:
|
||||
unreg_gyro_handler:
|
||||
if (config->xl_attach != NULL)
|
||||
{
|
||||
kthread_delete(gyro_pid);
|
||||
}
|
||||
|
||||
unreg_accel:
|
||||
unreg_accel:
|
||||
sensor_unregister(&priv->accel.lower, devno);
|
||||
unreg_gyro:
|
||||
unreg_gyro:
|
||||
sensor_unregister(&priv->gyro.lower, devno);
|
||||
del_accel_sem:
|
||||
del_accel_sem:
|
||||
nxsem_destroy(&priv->accel.run);
|
||||
nxsem_destroy(&priv->gyro.run);
|
||||
nxmutex_destroy(&priv->devlock);
|
||||
|
|
|
|||
|
|
@ -366,6 +366,7 @@ static int mcp9600_config_alert(FAR struct mcp9600_dev_s *priv,
|
|||
/* Configure limit */
|
||||
|
||||
int16_t limit = config->limit << 2; /* 2 LSBs must be 0 for this reg */
|
||||
|
||||
err = mcp9600_write_reg(priv, g_alert_limits[config->alert], &limit,
|
||||
sizeof(limit));
|
||||
if (err < 0)
|
||||
|
|
@ -376,6 +377,7 @@ static int mcp9600_config_alert(FAR struct mcp9600_dev_s *priv,
|
|||
/* Configure the config register */
|
||||
|
||||
uint8_t config_reg = 0;
|
||||
|
||||
config_reg |= (config->enable);
|
||||
config_reg |= (config->int_mode << 1);
|
||||
config_reg |= (config->active_high << 2);
|
||||
|
|
@ -398,6 +400,7 @@ static int mcp9600_config_alert(FAR struct mcp9600_dev_s *priv,
|
|||
static int mcp9600_write_devconf(FAR struct mcp9600_dev_s *dev)
|
||||
{
|
||||
uint8_t reg = 0;
|
||||
|
||||
reg |= (dev->conf.mode & 0x3);
|
||||
reg |= ((dev->conf.num_samples & 0x7) << 2);
|
||||
reg |= ((dev->conf.resolution & 0x3) << 5);
|
||||
|
|
@ -467,6 +470,7 @@ static int mcp9600_set_interval(FAR struct sensor_lowerhalf_s *lower,
|
|||
{
|
||||
FAR struct mcp9600_sens_s *sens =
|
||||
container_of(lower, FAR struct mcp9600_sens_s, lower);
|
||||
|
||||
sens->dev->interval = *period_us;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -586,156 +590,160 @@ static int mcp9600_control(FAR struct sensor_lowerhalf_s *lower,
|
|||
|
||||
switch (cmd)
|
||||
{
|
||||
/* Set thermocouple type */
|
||||
/* Set thermocouple type */
|
||||
|
||||
case SNIOC_SET_THERMO:
|
||||
{
|
||||
dev->conf.thermo_type = g_thermo_types[arg];
|
||||
err = mcp9600_write_devconf(dev);
|
||||
}
|
||||
break;
|
||||
|
||||
/* Device ID */
|
||||
|
||||
case SNIOC_WHO_AM_I:
|
||||
{
|
||||
struct mcp9600_devinfo_s *devinfo =
|
||||
(struct mcp9600_devinfo_s *)(arg);
|
||||
if (devinfo == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
err = mcp9600_read_reg(dev, REG_DEVID, devinfo, sizeof(*devinfo));
|
||||
}
|
||||
break;
|
||||
|
||||
/* Raw ADC data */
|
||||
|
||||
case SNIOC_READ_RAW_DATA:
|
||||
{
|
||||
int32_t *raw_data = (int32_t *)(arg);
|
||||
if (raw_data == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
err = mcp9600_read_reg(dev, REG_RAW_ADC, raw_data,
|
||||
3); /* Only read 24 bits */
|
||||
|
||||
/* Sign bit 1, set all upper bits to 1 for correct value in 32-bit
|
||||
* signed integer.
|
||||
*/
|
||||
|
||||
if (*raw_data & 0x100000)
|
||||
{
|
||||
*raw_data |= 0xfffc0000;
|
||||
}
|
||||
}
|
||||
|
||||
case SNIOC_CHECK_STATUS_REG:
|
||||
{
|
||||
uint8_t status_reg;
|
||||
struct mcp9600_status_s *status = (struct mcp9600_status_s *)(arg);
|
||||
if (status == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
err = mcp9600_read_reg(dev, REG_STATUS, &status_reg,
|
||||
sizeof(status_reg));
|
||||
if (err < 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* Set bits */
|
||||
|
||||
status->burst_complete = status_reg & 0x80;
|
||||
status->temp_update = status_reg & 0x40;
|
||||
status->temp_exceeded = status_reg & 0x10;
|
||||
status->alerts[0] = status_reg & 0x1;
|
||||
status->alerts[1] = status_reg & 0x2;
|
||||
status->alerts[2] = status_reg & 0x4;
|
||||
status->alerts[3] = status_reg & 0x8;
|
||||
|
||||
/* Clear what has been read (burst & temp registers) */
|
||||
|
||||
status_reg &= 0x3f;
|
||||
err = mcp9600_write_reg(dev, REG_STATUS, &status_reg,
|
||||
sizeof(status_reg));
|
||||
}
|
||||
break;
|
||||
|
||||
/* Configure the MCP9600 */
|
||||
|
||||
case SNIOC_CONFIGURE:
|
||||
{
|
||||
uint8_t registers[2] =
|
||||
case SNIOC_SET_THERMO:
|
||||
{
|
||||
0, 0
|
||||
};
|
||||
dev->conf.thermo_type = g_thermo_types[arg];
|
||||
err = mcp9600_write_devconf(dev);
|
||||
}
|
||||
break;
|
||||
|
||||
struct mcp9600_devconf_s *conf = (struct mcp9600_devconf_s *)(arg);
|
||||
/* Device ID */
|
||||
|
||||
/* Validate options */
|
||||
case SNIOC_WHO_AM_I:
|
||||
{
|
||||
struct mcp9600_devinfo_s *devinfo =
|
||||
(struct mcp9600_devinfo_s *)(arg);
|
||||
|
||||
err = mcp9600_validate_conf(conf);
|
||||
if (err < 0)
|
||||
if (devinfo == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
err = mcp9600_read_reg(dev, REG_DEVID, devinfo, sizeof(*devinfo));
|
||||
}
|
||||
break;
|
||||
|
||||
/* Raw ADC data */
|
||||
|
||||
case SNIOC_READ_RAW_DATA:
|
||||
{
|
||||
int32_t *raw_data = (int32_t *)(arg);
|
||||
|
||||
if (raw_data == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
err = mcp9600_read_reg(dev, REG_RAW_ADC, raw_data,
|
||||
3); /* Only read 24 bits */
|
||||
|
||||
/* Sign bit 1, set all upper bits to 1 for correct value in 32-bit
|
||||
* signed integer.
|
||||
*/
|
||||
|
||||
if (*raw_data & 0x100000)
|
||||
{
|
||||
*raw_data |= 0xfffc0000;
|
||||
}
|
||||
}
|
||||
|
||||
case SNIOC_CHECK_STATUS_REG:
|
||||
{
|
||||
uint8_t status_reg;
|
||||
struct mcp9600_status_s *status = (struct mcp9600_status_s *)(arg);
|
||||
|
||||
if (status == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
err = mcp9600_read_reg(dev, REG_STATUS, &status_reg,
|
||||
sizeof(status_reg));
|
||||
if (err < 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* Set bits */
|
||||
|
||||
status->burst_complete = status_reg & 0x80;
|
||||
status->temp_update = status_reg & 0x40;
|
||||
status->temp_exceeded = status_reg & 0x10;
|
||||
status->alerts[0] = status_reg & 0x1;
|
||||
status->alerts[1] = status_reg & 0x2;
|
||||
status->alerts[2] = status_reg & 0x4;
|
||||
status->alerts[3] = status_reg & 0x8;
|
||||
|
||||
/* Clear what has been read (burst & temp registers) */
|
||||
|
||||
status_reg &= 0x3f;
|
||||
err = mcp9600_write_reg(dev, REG_STATUS, &status_reg,
|
||||
sizeof(status_reg));
|
||||
}
|
||||
break;
|
||||
|
||||
/* Configure the MCP9600 */
|
||||
|
||||
case SNIOC_CONFIGURE:
|
||||
{
|
||||
uint8_t registers[2] =
|
||||
{
|
||||
break;
|
||||
0, 0
|
||||
};
|
||||
|
||||
/* Sensor configuration */
|
||||
struct mcp9600_devconf_s *conf = (struct mcp9600_devconf_s *)(arg);
|
||||
|
||||
registers[0] |= ((conf->thermo_type & 0x7) << 4);
|
||||
registers[0] |= (conf->filter_coeff & 0x7);
|
||||
/* Validate options */
|
||||
|
||||
/* Device configuration */
|
||||
err = mcp9600_validate_conf(conf);
|
||||
if (err < 0)
|
||||
{
|
||||
break;
|
||||
};
|
||||
|
||||
registers[1] |= (conf->mode & 0x3);
|
||||
registers[1] |= ((conf->num_samples & 0x7) << 2);
|
||||
registers[1] |= ((conf->resolution & 0x3) << 5);
|
||||
registers[1] |= ((conf->cold_res & 0x1) << 7);
|
||||
/* Sensor configuration */
|
||||
|
||||
/* Copy in options. Since the sensor configuration and device
|
||||
* configuration registers are sequential, we can do this in one
|
||||
* write operation.
|
||||
*/
|
||||
registers[0] |= ((conf->thermo_type & 0x7) << 4);
|
||||
registers[0] |= (conf->filter_coeff & 0x7);
|
||||
|
||||
err = mcp9600_write_reg(dev, REG_THERMO_SEN_CONF, registers,
|
||||
sizeof(registers));
|
||||
if (err < 0)
|
||||
{
|
||||
break;
|
||||
};
|
||||
/* Device configuration */
|
||||
|
||||
/* Store this as the official configuration */
|
||||
registers[1] |= (conf->mode & 0x3);
|
||||
registers[1] |= ((conf->num_samples & 0x7) << 2);
|
||||
registers[1] |= ((conf->resolution & 0x3) << 5);
|
||||
registers[1] |= ((conf->cold_res & 0x1) << 7);
|
||||
|
||||
memcpy(&dev->conf, conf, sizeof(dev->conf));
|
||||
}
|
||||
/* Copy in options. Since the sensor configuration and device
|
||||
* configuration registers are sequential, we can do this in one
|
||||
* write operation.
|
||||
*/
|
||||
|
||||
/* Configure alerts */
|
||||
err = mcp9600_write_reg(dev, REG_THERMO_SEN_CONF, registers,
|
||||
sizeof(registers));
|
||||
if (err < 0)
|
||||
{
|
||||
break;
|
||||
};
|
||||
|
||||
case SNIOC_WRITECONF:
|
||||
{
|
||||
struct mcp9600_alert_conf_s *conf =
|
||||
(struct mcp9600_alert_conf_s *)(arg);
|
||||
if (conf == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
/* Store this as the official configuration */
|
||||
|
||||
err = mcp9600_config_alert(dev, conf);
|
||||
}
|
||||
memcpy(&dev->conf, conf, sizeof(dev->conf));
|
||||
}
|
||||
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
/* Configure alerts */
|
||||
|
||||
case SNIOC_WRITECONF:
|
||||
{
|
||||
struct mcp9600_alert_conf_s *conf =
|
||||
(struct mcp9600_alert_conf_s *)(arg);
|
||||
|
||||
if (conf == NULL)
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
err = mcp9600_config_alert(dev, conf);
|
||||
}
|
||||
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
nxmutex_unlock(&dev->devlock);
|
||||
|
|
@ -933,11 +941,11 @@ int mcp9600_register(FAR struct i2c_master_s *i2c, uint8_t addr,
|
|||
{
|
||||
snerr("Failed to create the MCP9600 notification kthread.\n");
|
||||
sensor_unregister(&priv->delta.lower, d_devno);
|
||||
unreg_hot:
|
||||
unreg_hot:
|
||||
sensor_unregister(&priv->hot_junc.lower, h_devno);
|
||||
unreg_cold:
|
||||
unreg_cold:
|
||||
sensor_unregister(&priv->cold_junc.lower, c_devno);
|
||||
del_mutex:
|
||||
del_mutex:
|
||||
nxmutex_destroy(&priv->devlock);
|
||||
nxsem_destroy(&priv->run);
|
||||
kmm_free(priv);
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ static const uint32_t ODR_TO_INTERVAL[] =
|
|||
[NAU7802_ODR_40HZ] = 25000,
|
||||
[NAU7802_ODR_80HZ] = 12500,
|
||||
[NAU7802_ODR_320HZ] = 3125
|
||||
};
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
|
@ -238,6 +238,7 @@ static int nau7802_read_bit(FAR nau7802_dev_s *dev, uint8_t addr,
|
|||
static int nau7802_reset(FAR nau7802_dev_s *dev)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
err = nau7802_set_bits(dev, REG_PU_CTRL, 1, BIT_RR, 1);
|
||||
if (err < 0)
|
||||
{
|
||||
|
|
@ -261,6 +262,7 @@ static int nau7802_reset(FAR nau7802_dev_s *dev)
|
|||
usleep(200);
|
||||
|
||||
uint8_t reg_val;
|
||||
|
||||
err = nau7802_read_reg(dev, REG_PU_CTRL, ®_val, sizeof(reg_val));
|
||||
if (err < 0)
|
||||
{
|
||||
|
|
@ -291,6 +293,7 @@ static int nau7802_reset(FAR nau7802_dev_s *dev)
|
|||
static int nau7802_enable(FAR nau7802_dev_s *dev, bool enable)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
if (!enable)
|
||||
{
|
||||
err = nau7802_set_bits(dev, REG_PU_CTRL, 1, BIT_PUA, 0);
|
||||
|
|
@ -329,6 +332,7 @@ static int nau7802_enable(FAR nau7802_dev_s *dev, bool enable)
|
|||
}
|
||||
|
||||
bool reg_val;
|
||||
|
||||
err = nau7802_read_bit(dev, REG_PU_CTRL, BIT_PUR, ®_val);
|
||||
if (err < 0 || !reg_val)
|
||||
{
|
||||
|
|
@ -419,6 +423,7 @@ static int nau7802_set_ldo(FAR nau7802_dev_s *dev, nau7802_ldo_e voltage)
|
|||
}
|
||||
|
||||
int err = 0;
|
||||
|
||||
err = nau7802_set_bits(dev, REG_PU_CTRL, 1, BIT_AVVDS, 1);
|
||||
if (err < 0)
|
||||
{
|
||||
|
|
@ -503,6 +508,7 @@ static int nau7802_push_data(FAR nau7802_dev_s *dev)
|
|||
}
|
||||
|
||||
bool data_ready;
|
||||
|
||||
err = nau7802_data_available(dev, &data_ready);
|
||||
if (err < 0 || !data_ready)
|
||||
{
|
||||
|
|
@ -588,6 +594,7 @@ static int nau7802_set_calibvalue(FAR struct sensor_lowerhalf_s *lower,
|
|||
uint8_t reg_b0 = calibvalue & 0xff;
|
||||
|
||||
int err = 0;
|
||||
|
||||
err = nau7802_write_reg(dev, REG_GCAL1_B3, ®_b3, sizeof(reg_b3));
|
||||
if (err < 0)
|
||||
{
|
||||
|
|
@ -651,6 +658,7 @@ static int nau7802_calibrate(FAR struct sensor_lowerhalf_s *lower,
|
|||
/* Wait for calibration to complete */
|
||||
|
||||
bool reg_val;
|
||||
|
||||
do
|
||||
{
|
||||
err = nau7802_read_bit(dev, REG_CTRL_2, CAL_START, ®_val);
|
||||
|
|
@ -699,26 +707,26 @@ static int nau7802_control(FAR struct sensor_lowerhalf_s *lower,
|
|||
|
||||
switch (cmd)
|
||||
{
|
||||
case SNIOC_RESET:
|
||||
err = nau7802_reset(dev);
|
||||
break;
|
||||
case SNIOC_RESET:
|
||||
err = nau7802_reset(dev);
|
||||
break;
|
||||
|
||||
case SNIOC_SET_GAIN:
|
||||
err = nau7802_set_gain(dev, arg);
|
||||
break;
|
||||
case SNIOC_SET_GAIN:
|
||||
err = nau7802_set_gain(dev, arg);
|
||||
break;
|
||||
|
||||
case SNIOC_SET_LDO:
|
||||
err = nau7802_set_ldo(dev, arg);
|
||||
break;
|
||||
case SNIOC_SET_LDO:
|
||||
err = nau7802_set_ldo(dev, arg);
|
||||
break;
|
||||
|
||||
case SNIOC_GET_CALIBVALUE:
|
||||
err = nau7802_get_calibvalue(dev, arg);
|
||||
break;
|
||||
case SNIOC_GET_CALIBVALUE:
|
||||
err = nau7802_get_calibvalue(dev, arg);
|
||||
break;
|
||||
|
||||
default:
|
||||
err = -EINVAL;
|
||||
snerr("Unknown command for NAU7802: %d\n", cmd);
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
snerr("Unknown command for NAU7802: %d\n", cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
nxmutex_unlock(&dev->devlock);
|
||||
|
|
@ -755,6 +763,7 @@ static int nau7802_activate(FAR struct sensor_lowerhalf_s *lower,
|
|||
}
|
||||
|
||||
uint8_t reg_val;
|
||||
|
||||
err = nau7802_read_reg(dev, 0x1f, ®_val, sizeof(reg_val));
|
||||
if (err < 0 || (reg_val & 0xf) != 0xf)
|
||||
{
|
||||
|
|
@ -916,6 +925,7 @@ int nau7802_register(FAR struct i2c_master_s *i2c, int devno, uint8_t addr)
|
|||
{
|
||||
int err;
|
||||
FAR nau7802_dev_s *priv = kmm_zalloc(sizeof(nau7802_dev_s));
|
||||
|
||||
DEBUGASSERT(i2c != NULL);
|
||||
DEBUGASSERT(addr == 0x2a);
|
||||
|
||||
|
|
@ -946,6 +956,7 @@ int nau7802_register(FAR struct i2c_master_s *i2c, int devno, uint8_t addr)
|
|||
|
||||
FAR char *argv[2];
|
||||
char arg1[32];
|
||||
|
||||
snprintf(arg1, 16, "%p", priv);
|
||||
argv[0] = arg1;
|
||||
argv[1] = NULL;
|
||||
|
|
@ -963,9 +974,9 @@ int nau7802_register(FAR struct i2c_master_s *i2c, int devno, uint8_t addr)
|
|||
|
||||
if (err < 0)
|
||||
{
|
||||
sensor_unreg:
|
||||
sensor_unreg:
|
||||
sensor_unregister(&priv->lower, devno);
|
||||
del_sem:
|
||||
del_sem:
|
||||
nxsem_destroy(&priv->run);
|
||||
nxmutex_destroy(&priv->devlock);
|
||||
kmm_free(priv);
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ static const uint8_t g_crc_lookup[] =
|
|||
0x56, 0x78, 0x49, 0x1a, 0x2b, 0xbc, 0x8d, 0xde, 0xef, 0x82, 0xb3,
|
||||
0xe0, 0xd1, 0x46, 0x77, 0x24, 0x15, 0x3b, 0xa, 0x59, 0x68, 0xff,
|
||||
0xce, 0x9d, 0xac,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Measurement times for the various precisions, in microseconds. */
|
||||
|
|
@ -244,6 +244,7 @@ static const struct sensor_ops_s g_sensor_ops =
|
|||
uint8_t sht4x_crc_lookup(const uint8_t *buf, uint8_t nbytes)
|
||||
{
|
||||
uint8_t crc = SHT4X_CRC_INIT;
|
||||
|
||||
for (uint8_t byte = 0; byte < nbytes; byte++)
|
||||
{
|
||||
crc = g_crc_lookup[crc ^ buf[byte]];
|
||||
|
|
@ -265,6 +266,7 @@ uint8_t sht4x_crc_lookup(const uint8_t *buf, uint8_t nbytes)
|
|||
uint8_t sht4x_crc_bitwise(const uint8_t *buf, uint8_t nbytes)
|
||||
{
|
||||
uint8_t crc = SHT4X_CRC_INIT;
|
||||
|
||||
for (uint8_t byte = 0; byte < nbytes; byte++)
|
||||
{
|
||||
crc ^= buf[byte];
|
||||
|
|
@ -581,6 +583,7 @@ static int sht4x_set_interval(FAR struct sensor_lowerhalf_s *lower,
|
|||
FAR struct sht4x_sensor_s *priv =
|
||||
container_of(lower, FAR struct sht4x_sensor_s, sensor_lower);
|
||||
FAR struct sht4x_dev_s *dev = priv->dev;
|
||||
|
||||
dev->interval = *period_us;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -637,63 +640,67 @@ static int sht4x_control(FAR struct sensor_lowerhalf_s *lower,
|
|||
|
||||
switch (cmd)
|
||||
{
|
||||
case SNIOC_RESET:
|
||||
err = sht4x_reset(dev);
|
||||
break;
|
||||
case SNIOC_RESET:
|
||||
err = sht4x_reset(dev);
|
||||
break;
|
||||
|
||||
case SNIOC_WHO_AM_I:
|
||||
{
|
||||
union sht4x_serialno_t serialno;
|
||||
err = sht4x_cmd(dev, SHT4X_READ_SERIAL, 10, &serialno.halves.msb,
|
||||
&serialno.halves.lsb);
|
||||
*((FAR uint32_t *)(arg)) = serialno.full;
|
||||
}
|
||||
break;
|
||||
case SNIOC_WHO_AM_I:
|
||||
{
|
||||
union sht4x_serialno_t serialno;
|
||||
|
||||
case SNIOC_HEAT:
|
||||
{
|
||||
struct timespec now;
|
||||
clock_systime_timespec(&now);
|
||||
err = sht4x_cmd(dev, SHT4X_READ_SERIAL, 10, &serialno.halves.msb,
|
||||
&serialno.halves.lsb);
|
||||
*((FAR uint32_t *)(arg)) = serialno.full;
|
||||
}
|
||||
break;
|
||||
|
||||
/* Check if it has been one second since the last heat command. */
|
||||
case SNIOC_HEAT:
|
||||
{
|
||||
struct timespec now;
|
||||
|
||||
if (!has_time_passed(now, dev->last_heat, 1))
|
||||
{
|
||||
err = -EAGAIN; /* Signal to try again in some time. */
|
||||
break;
|
||||
}
|
||||
clock_systime_timespec(&now);
|
||||
|
||||
/* Check for invalid heater command */
|
||||
/* Check if it has been one second since the last heat command. */
|
||||
|
||||
if (0 < arg || arg >= (sizeof(g_heat_cmds) / sizeof(g_heat_cmds[0])))
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
if (!has_time_passed(now, dev->last_heat, 1))
|
||||
{
|
||||
err = -EAGAIN; /* Signal to try again in some time. */
|
||||
break;
|
||||
}
|
||||
|
||||
/* Heat for the desired period */
|
||||
/* Check for invalid heater command */
|
||||
|
||||
uint16_t trash;
|
||||
err = sht4x_cmd(dev, g_heat_cmds[arg], g_heat_times[arg], &trash,
|
||||
&trash);
|
||||
if (err)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (0 < arg ||
|
||||
arg >= (sizeof(g_heat_cmds) / sizeof(g_heat_cmds[0])))
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
clock_systime_timespec(&dev->last_heat); /* Update last heat time. */
|
||||
}
|
||||
break;
|
||||
/* Heat for the desired period */
|
||||
|
||||
case SNIOC_CONFIGURE:
|
||||
uint16_t trash;
|
||||
|
||||
/* Caller must pass precision option as argument. */
|
||||
err = sht4x_cmd(dev, g_heat_cmds[arg], g_heat_times[arg], &trash,
|
||||
&trash);
|
||||
if (err)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
dev->precision = arg;
|
||||
break;
|
||||
clock_systime_timespec(&dev->last_heat); /* Update last heat time. */
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
case SNIOC_CONFIGURE:
|
||||
|
||||
/* Caller must pass precision option as argument. */
|
||||
|
||||
dev->precision = arg;
|
||||
break;
|
||||
|
||||
default:
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
nxmutex_unlock(&dev->devlock);
|
||||
|
|
|
|||
|
|
@ -1071,45 +1071,45 @@ static int cdcecm_mkstrdesc(uint8_t id, FAR struct usb_strdesc_s *strdesc)
|
|||
switch (id)
|
||||
{
|
||||
#ifndef CONFIG_CDCECM_COMPOSITE
|
||||
case 0:
|
||||
{
|
||||
/* Descriptor 0 is the language id */
|
||||
case 0:
|
||||
{
|
||||
/* Descriptor 0 is the language id */
|
||||
|
||||
strdesc->len = 4;
|
||||
strdesc->type = USB_DESC_TYPE_STRING;
|
||||
data[0] = LSBYTE(CDCECM_STR_LANGUAGE);
|
||||
data[1] = MSBYTE(CDCECM_STR_LANGUAGE);
|
||||
return 4;
|
||||
}
|
||||
strdesc->len = 4;
|
||||
strdesc->type = USB_DESC_TYPE_STRING;
|
||||
data[0] = LSBYTE(CDCECM_STR_LANGUAGE);
|
||||
data[1] = MSBYTE(CDCECM_STR_LANGUAGE);
|
||||
return 4;
|
||||
}
|
||||
|
||||
case CDCECM_MANUFACTURERSTRID:
|
||||
str = CONFIG_CDCECM_VENDORSTR;
|
||||
break;
|
||||
case CDCECM_MANUFACTURERSTRID:
|
||||
str = CONFIG_CDCECM_VENDORSTR;
|
||||
break;
|
||||
|
||||
case CDCECM_PRODUCTSTRID:
|
||||
str = CONFIG_CDCECM_PRODUCTSTR;
|
||||
break;
|
||||
case CDCECM_PRODUCTSTRID:
|
||||
str = CONFIG_CDCECM_PRODUCTSTR;
|
||||
break;
|
||||
|
||||
case CDCECM_SERIALSTRID:
|
||||
case CDCECM_SERIALSTRID:
|
||||
#ifdef CONFIG_BOARD_USBDEV_SERIALSTR
|
||||
str = board_usbdev_serialstr();
|
||||
str = board_usbdev_serialstr();
|
||||
#else
|
||||
str = "0";
|
||||
str = "0";
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case CDCECM_CONFIGSTRID:
|
||||
str = "Default";
|
||||
break;
|
||||
case CDCECM_CONFIGSTRID:
|
||||
str = "Default";
|
||||
break;
|
||||
#endif
|
||||
|
||||
case CDCECM_MACSTRID:
|
||||
str = "020000112233";
|
||||
break;
|
||||
case CDCECM_MACSTRID:
|
||||
str = "020000112233";
|
||||
break;
|
||||
|
||||
default:
|
||||
uwarn("Unknown string descriptor index: %d\n", id);
|
||||
return -EINVAL;
|
||||
default:
|
||||
uwarn("Unknown string descriptor index: %d\n", id);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* The string is utf16-le. The poor man's utf-8 to utf16-le
|
||||
|
|
@ -1145,88 +1145,88 @@ static int cdcecm_mkstrdesc(uint8_t id, FAR struct usb_strdesc_s *strdesc)
|
|||
static void cdcecm_mkepcompdesc(int epidx,
|
||||
FAR struct usb_ss_epcompdesc_s *epcompdesc)
|
||||
{
|
||||
switch (epidx)
|
||||
switch (epidx)
|
||||
{
|
||||
case CDCECM_EP_INTIN_IDX: /* Interrupt IN endpoint */
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
case CDCECM_EP_INTIN_IDX: /* Interrupt IN endpoint */
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
|
||||
if (CONFIG_CDCECM_EPINTIN_MAXBURST >= USB_SS_INT_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_INT_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCECM_EPINTIN_MAXBURST;
|
||||
}
|
||||
if (CONFIG_CDCECM_EPINTIN_MAXBURST >= USB_SS_INT_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_INT_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCECM_EPINTIN_MAXBURST;
|
||||
}
|
||||
|
||||
epcompdesc->attr = 0;
|
||||
epcompdesc->wbytes[0] = LSBYTE((epcompdesc->mxburst + 1) *
|
||||
CONFIG_CDCECM_EPINTIN_SSSIZE);
|
||||
epcompdesc->wbytes[1] = MSBYTE((epcompdesc->mxburst + 1) *
|
||||
CONFIG_CDCECM_EPINTIN_SSSIZE);
|
||||
}
|
||||
break;
|
||||
epcompdesc->attr = 0;
|
||||
epcompdesc->wbytes[0] = LSBYTE((epcompdesc->mxburst + 1) *
|
||||
CONFIG_CDCECM_EPINTIN_SSSIZE);
|
||||
epcompdesc->wbytes[1] = MSBYTE((epcompdesc->mxburst + 1) *
|
||||
CONFIG_CDCECM_EPINTIN_SSSIZE);
|
||||
}
|
||||
break;
|
||||
|
||||
case CDCECM_EP_BULKOUT_IDX:
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
case CDCECM_EP_BULKOUT_IDX:
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
|
||||
if (CONFIG_CDCECM_EPBULKOUT_MAXBURST >= USB_SS_BULK_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_BULK_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCECM_EPBULKOUT_MAXBURST;
|
||||
}
|
||||
if (CONFIG_CDCECM_EPBULKOUT_MAXBURST >= USB_SS_BULK_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_BULK_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCECM_EPBULKOUT_MAXBURST;
|
||||
}
|
||||
|
||||
if (CONFIG_CDCECM_EPBULKOUT_MAXSTREAM > USB_SS_BULK_EP_MAXSTREAM)
|
||||
{
|
||||
epcompdesc->attr = USB_SS_BULK_EP_MAXSTREAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->attr = CONFIG_CDCECM_EPBULKOUT_MAXSTREAM;
|
||||
}
|
||||
if (CONFIG_CDCECM_EPBULKOUT_MAXSTREAM > USB_SS_BULK_EP_MAXSTREAM)
|
||||
{
|
||||
epcompdesc->attr = USB_SS_BULK_EP_MAXSTREAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->attr = CONFIG_CDCECM_EPBULKOUT_MAXSTREAM;
|
||||
}
|
||||
|
||||
epcompdesc->wbytes[0] = 0;
|
||||
epcompdesc->wbytes[1] = 0;
|
||||
}
|
||||
break;
|
||||
epcompdesc->wbytes[0] = 0;
|
||||
epcompdesc->wbytes[1] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case CDCECM_EP_BULKIN_IDX:
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
case CDCECM_EP_BULKIN_IDX:
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
|
||||
if (CONFIG_CDCECM_EPBULKIN_MAXBURST >= USB_SS_BULK_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_BULK_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCECM_EPBULKIN_MAXBURST;
|
||||
}
|
||||
if (CONFIG_CDCECM_EPBULKIN_MAXBURST >= USB_SS_BULK_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_BULK_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCECM_EPBULKIN_MAXBURST;
|
||||
}
|
||||
|
||||
if (CONFIG_CDCECM_EPBULKIN_MAXSTREAM > USB_SS_BULK_EP_MAXSTREAM)
|
||||
{
|
||||
epcompdesc->attr = USB_SS_BULK_EP_MAXSTREAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->attr = CONFIG_CDCECM_EPBULKIN_MAXSTREAM;
|
||||
}
|
||||
if (CONFIG_CDCECM_EPBULKIN_MAXSTREAM > USB_SS_BULK_EP_MAXSTREAM)
|
||||
{
|
||||
epcompdesc->attr = USB_SS_BULK_EP_MAXSTREAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->attr = CONFIG_CDCECM_EPBULKIN_MAXSTREAM;
|
||||
}
|
||||
|
||||
epcompdesc->wbytes[0] = 0;
|
||||
epcompdesc->wbytes[1] = 0;
|
||||
}
|
||||
break;
|
||||
epcompdesc->wbytes[0] = 0;
|
||||
epcompdesc->wbytes[1] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
@ -1589,32 +1589,32 @@ static int cdcecm_getdescriptor(FAR struct cdcecm_driver_s *self,
|
|||
switch (type)
|
||||
{
|
||||
#ifndef CONFIG_CDCECM_COMPOSITE
|
||||
case USB_DESC_TYPE_DEVICE:
|
||||
{
|
||||
return usbdev_copy_devdesc(desc, &g_devdesc, self->usbdev.speed);
|
||||
}
|
||||
break;
|
||||
case USB_DESC_TYPE_DEVICE:
|
||||
{
|
||||
return usbdev_copy_devdesc(desc, &g_devdesc, self->usbdev.speed);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USBDEV_DUALSPEED
|
||||
case USB_DESC_TYPE_OTHERSPEEDCONFIG:
|
||||
case USB_DESC_TYPE_OTHERSPEEDCONFIG:
|
||||
#endif /* CONFIG_USBDEV_DUALSPEED */
|
||||
case USB_DESC_TYPE_CONFIG:
|
||||
{
|
||||
return cdcecm_mkcfgdesc((FAR uint8_t *)desc, &self->devinfo,
|
||||
self->usbdev.speed, type);
|
||||
}
|
||||
break;
|
||||
case USB_DESC_TYPE_CONFIG:
|
||||
{
|
||||
return cdcecm_mkcfgdesc((FAR uint8_t *)desc, &self->devinfo,
|
||||
self->usbdev.speed, type);
|
||||
}
|
||||
break;
|
||||
|
||||
case USB_DESC_TYPE_STRING:
|
||||
{
|
||||
return cdcecm_mkstrdesc(index, (FAR struct usb_strdesc_s *)desc);
|
||||
}
|
||||
break;
|
||||
case USB_DESC_TYPE_STRING:
|
||||
{
|
||||
return cdcecm_mkstrdesc(index, (FAR struct usb_strdesc_s *)desc);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
uwarn("Unsupported descriptor type: 0x%02hhx\n", type);
|
||||
break;
|
||||
default:
|
||||
uwarn("Unsupported descriptor type: 0x%02hhx\n", type);
|
||||
break;
|
||||
}
|
||||
|
||||
return -ENOTSUP;
|
||||
|
|
|
|||
|
|
@ -806,6 +806,7 @@ static int cdcmbim_poll(FAR struct file *filep, FAR struct pollfd *fds,
|
|||
/* This is a request to tear down the poll. */
|
||||
|
||||
FAR struct pollfd **slot = (FAR struct pollfd **)fds->priv;
|
||||
|
||||
DEBUGASSERT(slot);
|
||||
|
||||
/* Remove all memory of the poll setup */
|
||||
|
|
@ -1847,45 +1848,45 @@ static int cdcnm_mkstrdesc(uint8_t id, FAR struct usb_strdesc_s *strdesc,
|
|||
switch (id)
|
||||
{
|
||||
#ifndef CONFIG_CDCNCM_COMPOSITE
|
||||
case 0:
|
||||
{
|
||||
/* Descriptor 0 is the language id */
|
||||
case 0:
|
||||
{
|
||||
/* Descriptor 0 is the language id */
|
||||
|
||||
strdesc->len = 4;
|
||||
strdesc->type = USB_DESC_TYPE_STRING;
|
||||
data[0] = LSBYTE(CDCECM_STR_LANGUAGE);
|
||||
data[1] = MSBYTE(CDCECM_STR_LANGUAGE);
|
||||
return 4;
|
||||
}
|
||||
strdesc->len = 4;
|
||||
strdesc->type = USB_DESC_TYPE_STRING;
|
||||
data[0] = LSBYTE(CDCECM_STR_LANGUAGE);
|
||||
data[1] = MSBYTE(CDCECM_STR_LANGUAGE);
|
||||
return 4;
|
||||
}
|
||||
|
||||
case CDCECM_MANUFACTURERSTRID:
|
||||
str = CONFIG_CDCNCM_VENDORSTR;
|
||||
break;
|
||||
case CDCECM_MANUFACTURERSTRID:
|
||||
str = CONFIG_CDCNCM_VENDORSTR;
|
||||
break;
|
||||
|
||||
case CDCECM_PRODUCTSTRID:
|
||||
str = isncm ? CONFIG_CDCNCM_PRODUCTSTR : CONFIG_CDCMBIM_PRODUCTSTR;
|
||||
break;
|
||||
case CDCECM_PRODUCTSTRID:
|
||||
str = isncm ? CONFIG_CDCNCM_PRODUCTSTR : CONFIG_CDCMBIM_PRODUCTSTR;
|
||||
break;
|
||||
|
||||
case CDCECM_SERIALSTRID:
|
||||
case CDCECM_SERIALSTRID:
|
||||
#ifdef CONFIG_BOARD_USBDEV_SERIALSTR
|
||||
str = board_usbdev_serialstr();
|
||||
str = board_usbdev_serialstr();
|
||||
#else
|
||||
str = "0";
|
||||
str = "0";
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case CDCECM_CONFIGSTRID:
|
||||
str = "Default";
|
||||
break;
|
||||
case CDCECM_CONFIGSTRID:
|
||||
str = "Default";
|
||||
break;
|
||||
#endif
|
||||
|
||||
case CDCECM_MACSTRID:
|
||||
str = "020000112233";
|
||||
break;
|
||||
case CDCECM_MACSTRID:
|
||||
str = "020000112233";
|
||||
break;
|
||||
|
||||
default:
|
||||
uerr("Unknown string descriptor index: %d\n", id);
|
||||
return -EINVAL;
|
||||
default:
|
||||
uerr("Unknown string descriptor index: %d\n", id);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* The string is utf16-le. The poor man's utf-8 to utf16-le
|
||||
|
|
@ -1949,88 +1950,88 @@ static int cdcmbim_mkstrdesc(uint8_t id, FAR struct usb_strdesc_s *strdesc)
|
|||
static void cdcncm_mkepcompdesc(int epidx,
|
||||
FAR struct usb_ss_epcompdesc_s *epcompdesc)
|
||||
{
|
||||
switch (epidx)
|
||||
switch (epidx)
|
||||
{
|
||||
case CDCNCM_EP_INTIN_IDX: /* Interrupt IN endpoint */
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
case CDCNCM_EP_INTIN_IDX: /* Interrupt IN endpoint */
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
|
||||
if (CONFIG_CDCNCM_EPINTIN_MAXBURST >= USB_SS_INT_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_INT_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCNCM_EPINTIN_MAXBURST;
|
||||
}
|
||||
if (CONFIG_CDCNCM_EPINTIN_MAXBURST >= USB_SS_INT_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_INT_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCNCM_EPINTIN_MAXBURST;
|
||||
}
|
||||
|
||||
epcompdesc->attr = 0;
|
||||
epcompdesc->wbytes[0] = LSBYTE((epcompdesc->mxburst + 1) *
|
||||
CONFIG_CDCNCM_EPINTIN_SSSIZE);
|
||||
epcompdesc->wbytes[1] = MSBYTE((epcompdesc->mxburst + 1) *
|
||||
CONFIG_CDCNCM_EPINTIN_SSSIZE);
|
||||
}
|
||||
break;
|
||||
epcompdesc->attr = 0;
|
||||
epcompdesc->wbytes[0] = LSBYTE((epcompdesc->mxburst + 1) *
|
||||
CONFIG_CDCNCM_EPINTIN_SSSIZE);
|
||||
epcompdesc->wbytes[1] = MSBYTE((epcompdesc->mxburst + 1) *
|
||||
CONFIG_CDCNCM_EPINTIN_SSSIZE);
|
||||
}
|
||||
break;
|
||||
|
||||
case CDCNCM_EP_BULKOUT_IDX:
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
case CDCNCM_EP_BULKOUT_IDX:
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
|
||||
if (CONFIG_CDCNCM_EPBULKOUT_MAXBURST >= USB_SS_BULK_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_BULK_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCNCM_EPBULKOUT_MAXBURST;
|
||||
}
|
||||
if (CONFIG_CDCNCM_EPBULKOUT_MAXBURST >= USB_SS_BULK_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_BULK_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCNCM_EPBULKOUT_MAXBURST;
|
||||
}
|
||||
|
||||
if (CONFIG_CDCNCM_EPBULKOUT_MAXSTREAM > USB_SS_BULK_EP_MAXSTREAM)
|
||||
{
|
||||
epcompdesc->attr = USB_SS_BULK_EP_MAXSTREAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->attr = CONFIG_CDCNCM_EPBULKOUT_MAXSTREAM;
|
||||
}
|
||||
if (CONFIG_CDCNCM_EPBULKOUT_MAXSTREAM > USB_SS_BULK_EP_MAXSTREAM)
|
||||
{
|
||||
epcompdesc->attr = USB_SS_BULK_EP_MAXSTREAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->attr = CONFIG_CDCNCM_EPBULKOUT_MAXSTREAM;
|
||||
}
|
||||
|
||||
epcompdesc->wbytes[0] = 0;
|
||||
epcompdesc->wbytes[1] = 0;
|
||||
}
|
||||
break;
|
||||
epcompdesc->wbytes[0] = 0;
|
||||
epcompdesc->wbytes[1] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case CDCNCM_EP_BULKIN_IDX:
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
case CDCNCM_EP_BULKIN_IDX:
|
||||
{
|
||||
epcompdesc->len = USB_SIZEOF_SS_EPCOMPDESC; /* Descriptor length */
|
||||
epcompdesc->type = USB_DESC_TYPE_ENDPOINT_COMPANION; /* Descriptor type */
|
||||
|
||||
if (CONFIG_CDCNCM_EPBULKIN_MAXBURST >= USB_SS_BULK_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_BULK_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCNCM_EPBULKIN_MAXBURST;
|
||||
}
|
||||
if (CONFIG_CDCNCM_EPBULKIN_MAXBURST >= USB_SS_BULK_EP_MAXBURST)
|
||||
{
|
||||
epcompdesc->mxburst = USB_SS_BULK_EP_MAXBURST - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->mxburst = CONFIG_CDCNCM_EPBULKIN_MAXBURST;
|
||||
}
|
||||
|
||||
if (CONFIG_CDCNCM_EPBULKIN_MAXSTREAM > USB_SS_BULK_EP_MAXSTREAM)
|
||||
{
|
||||
epcompdesc->attr = USB_SS_BULK_EP_MAXSTREAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->attr = CONFIG_CDCNCM_EPBULKIN_MAXSTREAM;
|
||||
}
|
||||
if (CONFIG_CDCNCM_EPBULKIN_MAXSTREAM > USB_SS_BULK_EP_MAXSTREAM)
|
||||
{
|
||||
epcompdesc->attr = USB_SS_BULK_EP_MAXSTREAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
epcompdesc->attr = CONFIG_CDCNCM_EPBULKIN_MAXSTREAM;
|
||||
}
|
||||
|
||||
epcompdesc->wbytes[0] = 0;
|
||||
epcompdesc->wbytes[1] = 0;
|
||||
}
|
||||
break;
|
||||
epcompdesc->wbytes[0] = 0;
|
||||
epcompdesc->wbytes[1] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
@ -2462,36 +2463,36 @@ static int cdcncm_getdescriptor(FAR struct cdcncm_driver_s *self,
|
|||
switch (type)
|
||||
{
|
||||
#ifndef CONFIG_CDCNCM_COMPOSITE
|
||||
case USB_DESC_TYPE_DEVICE:
|
||||
if (self->isncm)
|
||||
{
|
||||
return usbdev_copy_devdesc(desc,
|
||||
&g_ncmdevdesc,
|
||||
self->usbdev.speed);
|
||||
}
|
||||
case USB_DESC_TYPE_DEVICE:
|
||||
if (self->isncm)
|
||||
{
|
||||
return usbdev_copy_devdesc(desc,
|
||||
&g_ncmdevdesc,
|
||||
self->usbdev.speed);
|
||||
}
|
||||
# ifdef CONFIG_NET_CDCMBIM
|
||||
else
|
||||
{
|
||||
memcpy(desc, &g_mbimdevdesc, sizeof(g_mbimdevdesc));
|
||||
return sizeof(g_mbimdevdesc);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(desc, &g_mbimdevdesc, sizeof(g_mbimdevdesc));
|
||||
return sizeof(g_mbimdevdesc);
|
||||
}
|
||||
# endif
|
||||
break;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USBDEV_DUALSPEED
|
||||
case USB_DESC_TYPE_OTHERSPEEDCONFIG:
|
||||
case USB_DESC_TYPE_OTHERSPEEDCONFIG:
|
||||
#endif /* CONFIG_USBDEV_DUALSPEED */
|
||||
case USB_DESC_TYPE_CONFIG:
|
||||
return cdcncm_mkcfgdesc((FAR uint8_t *)desc, &self->devinfo,
|
||||
self->usbdev.speed, type);
|
||||
case USB_DESC_TYPE_CONFIG:
|
||||
return cdcncm_mkcfgdesc((FAR uint8_t *)desc, &self->devinfo,
|
||||
self->usbdev.speed, type);
|
||||
|
||||
case USB_DESC_TYPE_STRING:
|
||||
return cdcncm_mkstrdesc(index, (FAR struct usb_strdesc_s *)desc);
|
||||
case USB_DESC_TYPE_STRING:
|
||||
return cdcncm_mkstrdesc(index, (FAR struct usb_strdesc_s *)desc);
|
||||
|
||||
default:
|
||||
uerr("Unsupported descriptor type: 0x%02hhx\n", type);
|
||||
break;
|
||||
default:
|
||||
uerr("Unsupported descriptor type: 0x%02hhx\n", type);
|
||||
break;
|
||||
}
|
||||
|
||||
return -ENOTSUP;
|
||||
|
|
@ -2767,7 +2768,10 @@ static int cdcncm_setup(FAR struct usbdevclass_driver_s *driver,
|
|||
|
||||
case NCM_SET_NTB_FORMAT:
|
||||
if (len != 0 || index != self->devinfo.ifnobase)
|
||||
break;
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
switch (value)
|
||||
{
|
||||
case 0x0000:
|
||||
|
|
@ -2841,6 +2845,7 @@ static int cdcncm_setup(FAR struct usbdevclass_driver_s *driver,
|
|||
FAR struct cdcmbim_driver_s *mbim =
|
||||
(FAR struct cdcmbim_driver_s *)self;
|
||||
FAR struct iob_s *iob;
|
||||
|
||||
ret = -ENOSPC;
|
||||
|
||||
if ((iob = iob_remove_queue(&mbim->tx_queue)) != NULL)
|
||||
|
|
|
|||
|
|
@ -822,6 +822,7 @@ static int rn2xx3_setbw(FAR struct rn2xx3_dev_s *priv, uint32_t bw)
|
|||
{
|
||||
char bwstr[16];
|
||||
ssize_t length;
|
||||
|
||||
length =
|
||||
file_write(&priv->uart, "radio set bw ", sizeof("radio set bw ") - 1);
|
||||
if (length < 0)
|
||||
|
|
@ -1666,167 +1667,179 @@ static int rn2xx3_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||
|
||||
switch (cmd)
|
||||
{
|
||||
case WLIOC_RESET:
|
||||
{
|
||||
err = rn2xx3_reset(priv);
|
||||
break;
|
||||
}
|
||||
case WLIOC_RESET:
|
||||
{
|
||||
err = rn2xx3_reset(priv);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_IQIEN:
|
||||
{
|
||||
err = rn2xx3_iqi_en(priv, arg);
|
||||
break;
|
||||
}
|
||||
case WLIOC_IQIEN:
|
||||
{
|
||||
err = rn2xx3_iqi_en(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_CRCEN:
|
||||
{
|
||||
err = rn2xx3_crc_en(priv, arg);
|
||||
break;
|
||||
}
|
||||
case WLIOC_CRCEN:
|
||||
{
|
||||
err = rn2xx3_crc_en(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETSNR:
|
||||
{
|
||||
FAR int8_t *snr = (FAR int8_t *)(arg);
|
||||
DEBUGASSERT(snr != NULL);
|
||||
err = rn2xx3_getsnr(priv, snr);
|
||||
break;
|
||||
}
|
||||
case WLIOC_GETSNR:
|
||||
{
|
||||
FAR int8_t *snr = (FAR int8_t *)(arg);
|
||||
|
||||
case WLIOC_SETRADIOFREQ:
|
||||
{
|
||||
err = rn2xx3_setfreq(priv, arg);
|
||||
break;
|
||||
}
|
||||
DEBUGASSERT(snr != NULL);
|
||||
err = rn2xx3_getsnr(priv, snr);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETRADIOFREQ:
|
||||
{
|
||||
FAR uint32_t *freq = (FAR uint32_t *)(arg);
|
||||
DEBUGASSERT(freq != NULL);
|
||||
err = rn2xx3_getfreq(priv, freq);
|
||||
break;
|
||||
}
|
||||
case WLIOC_SETRADIOFREQ:
|
||||
{
|
||||
err = rn2xx3_setfreq(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETTXPOWERF:
|
||||
{
|
||||
FAR int32_t *txpwr = (FAR int32_t *)(arg);
|
||||
DEBUGASSERT(txpwr != NULL);
|
||||
err = rn2xx3_settxpwr(priv, txpwr);
|
||||
break;
|
||||
}
|
||||
case WLIOC_GETRADIOFREQ:
|
||||
{
|
||||
FAR uint32_t *freq = (FAR uint32_t *)(arg);
|
||||
|
||||
case WLIOC_GETTXPOWERF:
|
||||
{
|
||||
FAR int32_t *txpwr = (FAR int32_t *)(arg);
|
||||
DEBUGASSERT(txpwr != NULL);
|
||||
err = rn2xx3_gettxpwr(priv, txpwr);
|
||||
break;
|
||||
}
|
||||
DEBUGASSERT(freq != NULL);
|
||||
err = rn2xx3_getfreq(priv, freq);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETBANDWIDTH:
|
||||
{
|
||||
err = rn2xx3_setbw(priv, arg);
|
||||
break;
|
||||
}
|
||||
case WLIOC_SETTXPOWERF:
|
||||
{
|
||||
FAR int32_t *txpwr = (FAR int32_t *)(arg);
|
||||
|
||||
case WLIOC_GETBANDWIDTH:
|
||||
{
|
||||
FAR uint32_t *bw = (FAR uint32_t *)(arg);
|
||||
DEBUGASSERT(bw != NULL);
|
||||
err = rn2xx3_getbw(priv, bw);
|
||||
break;
|
||||
}
|
||||
DEBUGASSERT(txpwr != NULL);
|
||||
err = rn2xx3_settxpwr(priv, txpwr);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETSPREAD:
|
||||
{
|
||||
err = rn2xx3_setsf(priv, arg);
|
||||
break;
|
||||
}
|
||||
case WLIOC_GETTXPOWERF:
|
||||
{
|
||||
FAR int32_t *txpwr = (FAR int32_t *)(arg);
|
||||
|
||||
case WLIOC_GETSPREAD:
|
||||
{
|
||||
FAR uint8_t *sf = (FAR uint8_t *)(arg);
|
||||
DEBUGASSERT(sf != NULL);
|
||||
err = rn2xx3_getsf(priv, sf);
|
||||
break;
|
||||
}
|
||||
DEBUGASSERT(txpwr != NULL);
|
||||
err = rn2xx3_gettxpwr(priv, txpwr);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETPRLEN:
|
||||
{
|
||||
err = rn2xx3_setprlen(priv, arg);
|
||||
break;
|
||||
}
|
||||
case WLIOC_SETBANDWIDTH:
|
||||
{
|
||||
err = rn2xx3_setbw(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETPRLEN:
|
||||
{
|
||||
FAR uint16_t *prlen = (FAR uint16_t *)(arg);
|
||||
DEBUGASSERT(prlen != NULL);
|
||||
err = rn2xx3_getprlen(priv, prlen);
|
||||
break;
|
||||
}
|
||||
case WLIOC_GETBANDWIDTH:
|
||||
{
|
||||
FAR uint32_t *bw = (FAR uint32_t *)(arg);
|
||||
|
||||
case WLIOC_SETMOD:
|
||||
{
|
||||
err = rn2xx3_setmod(priv, arg);
|
||||
break;
|
||||
}
|
||||
DEBUGASSERT(bw != NULL);
|
||||
err = rn2xx3_getbw(priv, bw);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETMOD:
|
||||
{
|
||||
FAR enum rn2xx3_mod_e *mod = (FAR enum rn2xx3_mod_e *)(arg);
|
||||
DEBUGASSERT(mod != NULL);
|
||||
err = rn2xx3_getmod(priv, mod);
|
||||
break;
|
||||
}
|
||||
case WLIOC_SETSPREAD:
|
||||
{
|
||||
err = rn2xx3_setsf(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETSYNC:
|
||||
{
|
||||
FAR uint64_t *syncword = (FAR uint64_t *)(arg);
|
||||
DEBUGASSERT(syncword != NULL);
|
||||
err = rn2xx3_setsync(priv, *syncword);
|
||||
break;
|
||||
}
|
||||
case WLIOC_GETSPREAD:
|
||||
{
|
||||
FAR uint8_t *sf = (FAR uint8_t *)(arg);
|
||||
|
||||
case WLIOC_GETSYNC:
|
||||
{
|
||||
FAR uint64_t *sync = (FAR uint64_t *)(arg);
|
||||
DEBUGASSERT(sync != NULL);
|
||||
err = rn2xx3_getsync(priv, sync);
|
||||
break;
|
||||
}
|
||||
DEBUGASSERT(sf != NULL);
|
||||
err = rn2xx3_getsf(priv, sf);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETBITRATE:
|
||||
{
|
||||
err = rn2xx3_setbitrate(priv, arg);
|
||||
break;
|
||||
}
|
||||
case WLIOC_SETPRLEN:
|
||||
{
|
||||
err = rn2xx3_setprlen(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETBITRATE:
|
||||
{
|
||||
FAR uint32_t *bitrate = (FAR uint32_t *)(arg);
|
||||
DEBUGASSERT(bitrate != NULL);
|
||||
err = rn2xx3_getbitrate(priv, bitrate);
|
||||
break;
|
||||
}
|
||||
case WLIOC_GETPRLEN:
|
||||
{
|
||||
FAR uint16_t *prlen = (FAR uint16_t *)(arg);
|
||||
|
||||
case WLIOC_SETCODERATE:
|
||||
{
|
||||
err = rn2xx3_setcr(priv, arg);
|
||||
break;
|
||||
}
|
||||
DEBUGASSERT(prlen != NULL);
|
||||
err = rn2xx3_getprlen(priv, prlen);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETCODERATE:
|
||||
{
|
||||
FAR enum rn2xx3_cr_e *cr = (FAR enum rn2xx3_cr_e *)(arg);
|
||||
DEBUGASSERT(cr != NULL);
|
||||
err = rn2xx3_getcr(priv, cr);
|
||||
break;
|
||||
}
|
||||
case WLIOC_SETMOD:
|
||||
{
|
||||
err = rn2xx3_setmod(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
case WLIOC_GETMOD:
|
||||
{
|
||||
FAR enum rn2xx3_mod_e *mod = (FAR enum rn2xx3_mod_e *)(arg);
|
||||
|
||||
DEBUGASSERT(mod != NULL);
|
||||
err = rn2xx3_getmod(priv, mod);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETSYNC:
|
||||
{
|
||||
FAR uint64_t *syncword = (FAR uint64_t *)(arg);
|
||||
|
||||
DEBUGASSERT(syncword != NULL);
|
||||
err = rn2xx3_setsync(priv, *syncword);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETSYNC:
|
||||
{
|
||||
FAR uint64_t *sync = (FAR uint64_t *)(arg);
|
||||
|
||||
DEBUGASSERT(sync != NULL);
|
||||
err = rn2xx3_getsync(priv, sync);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETBITRATE:
|
||||
{
|
||||
err = rn2xx3_setbitrate(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETBITRATE:
|
||||
{
|
||||
FAR uint32_t *bitrate = (FAR uint32_t *)(arg);
|
||||
|
||||
DEBUGASSERT(bitrate != NULL);
|
||||
err = rn2xx3_getbitrate(priv, bitrate);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_SETCODERATE:
|
||||
{
|
||||
err = rn2xx3_setcr(priv, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
case WLIOC_GETCODERATE:
|
||||
{
|
||||
FAR enum rn2xx3_cr_e *cr = (FAR enum rn2xx3_cr_e *)(arg);
|
||||
|
||||
DEBUGASSERT(cr != NULL);
|
||||
err = rn2xx3_getcr(priv, cr);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
err = -EINVAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
early_ret:
|
||||
|
|
@ -1919,9 +1932,9 @@ int rn2xx3_register(FAR const char *devpath, FAR const char *uartpath)
|
|||
|
||||
if (err < 0)
|
||||
{
|
||||
close_file:
|
||||
close_file:
|
||||
file_close(&priv->uart);
|
||||
destroy_mutex:
|
||||
destroy_mutex:
|
||||
nxmutex_destroy(&priv->devlock);
|
||||
kmm_free(priv);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -386,7 +386,7 @@ static off_t zipfs_seek(FAR struct file *filep, off_t offset,
|
|||
goto err_with_lock;
|
||||
}
|
||||
|
||||
offset += file_info.uncompressed_size;
|
||||
offset += file_info.uncompressed_size;
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue