1 /* 2 * Copyright (C) 2020-2021 Alibaba Group Holding Limited 3 */ 4 5 #ifndef AOS_DEVICE_H 6 #define AOS_DEVICE_H 7 8 #include <aos/kernel.h> 9 10 typedef enum { 11 AOS_DEV_TYPE_MISC = 0, 12 AOS_DEV_TYPE_INTC, 13 AOS_DEV_TYPE_TTY, 14 AOS_DEV_TYPE_GPIOC, 15 AOS_DEV_TYPE_GPIO, 16 AOS_DEV_TYPE_WATCHDOG, 17 AOS_DEV_TYPE_ETHERNET, 18 AOS_DEV_TYPE_WLAN, 19 AOS_DEV_TYPE_BLOCK, 20 AOS_DEV_TYPE_FLASH, 21 AOS_DEV_TYPE_MTD, 22 AOS_DEV_TYPE_RTC, 23 AOS_DEV_TYPE_SPI, 24 AOS_DEV_TYPE_I2C, 25 AOS_DEV_TYPE_ADC, 26 AOS_DEV_TYPE_DAC, 27 AOS_DEV_TYPE_PWM, 28 } aos_dev_type_t; 29 30 struct aos_dev; 31 32 typedef struct aos_dev_ref { 33 struct aos_dev *dev; 34 void *pdata; 35 } aos_dev_ref_t; 36 37 #define AOS_DEV_REF_INIT_VAL { .dev = NULL, .pdata = NULL, } 38 #define aos_dev_ref_init(ref) do { *(ref) = (aos_dev_ref_t)AOS_DEV_REF_INIT_VAL; } while (0) 39 #define aos_dev_ref_is_valid(ref) (!!(ref)->dev) 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 aos_status_t aos_dev_get(aos_dev_ref_t *ref, aos_dev_type_t type, uint32_t id); 46 void aos_dev_put(aos_dev_ref_t *ref); 47 48 #ifdef __cplusplus 49 } 50 #endif 51 52 #endif /* AOS_DEVICE_H */ 53