/* * Copyright (C) 2017 XRADIO TECHNOLOGY CO., LTD. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the * distribution. * 3. Neither the name of XRADIO TECHNOLOGY CO., LTD. nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "common/cmd/cmd_util.h" #include "driver/component/da217/mir3da.h" #ifdef CONFIG_DA217 static OS_Thread_t g_thread_gsensor; static void gsensor_manager_task(void *arg) { int16_t x = 0, y = 0, z = 0; while (1) { da217_read_data(&x, &y, &z); printf("\r\n x=%d y=%d z=%d \r\n", x, y, z); OS_MSleep(500); } } static enum cmd_status cmd_gsensor_init_exec(void) { int ret = 0; da217_init(); da217_set_enable(1); OS_ThreadCreate(&g_thread_gsensor, "pmu_manager", gsensor_manager_task, NULL, OS_PRIORITY_HIGH, 1024 * 2); return CMD_STATUS_OK; } static enum cmd_status cmd_gsensor_deinit_exec(void) { int ret = 0; da217_set_enable(0); da217_deinit(); OS_ThreadDelete(&g_thread_gsensor); return CMD_STATUS_OK; } static enum cmd_status cmd_gsensor_enable_interrupt_exec(void) { da217_open_interrupt(); return CMD_STATUS_OK; } static enum cmd_status cmd_gsensor_disable_interrupt_exec(void) { da217_close_interrupt(); return CMD_STATUS_OK; } static const struct cmd_data g_gsensor_cmds[] = { { "init", cmd_gsensor_init_exec}, { "deinit", cmd_gsensor_deinit_exec}, { "irq_enable", cmd_gsensor_enable_interrupt_exec}, { "irq_disable", cmd_gsensor_disable_interrupt_exec} }; enum cmd_status cmd_gsensor_exec(char *cmd) { return cmd_exec(cmd, g_gsensor_cmds, cmd_nitems(g_gsensor_cmds)); } #endif /* CONFIG_DA217 */