1 /******************************************************************************
3 * @author Dozingfiretruck
5 *****************************************************************************/
14 * @defgroup CAMERA CAMERA设备(CAMERA)
19 LUAT_CAMERA_FRAME_START
= 0,
20 LUAT_CAMERA_FRAME_END
,
21 LUAT_CAMERA_FRAME_RX_DONE
,
22 LUAT_CAMERA_FRAME_ERROR
,
24 LUAT_CAMERA_MODE_AUTO
= 0,
25 LUAT_CAMERA_MODE_SCAN
,
28 typedef struct luat_camera_conf
38 uint16_t sensor_width
;
39 uint16_t sensor_height
;
46 luat_lcd_conf_t
* lcd_conf
;
54 size_t camera_speed
; //提供给camera时钟频率
55 uint16_t sensor_width
; //camera的最大宽度
56 uint16_t sensor_height
; //camera的最大高度
58 uint8_t rowScaleRatio
;
59 uint8_t colScaleRatio
;
62 uint8_t is_msb
; //0 or 1;
63 uint8_t is_two_line_rx
; //0 or 1;
64 uint8_t seq_type
; //0 or 1
65 uint8_t plat_param
[4];
67 luat_lcd_conf_t
* lcd_conf
;
73 int l_camera_handler(lua_State
*L
, void* ptr
);
76 * @brief 配置spi camera并且初始化camera
77 * @param id camera接收数据总线ID,ec618上有2条,0和1
78 * @param conf camera相关配置
79 * @param callback camera接收中断回调,注意这是在中断里的回调
80 * @param param 中断回调时用户的参数
83 int luat_camera_setup(int id
, luat_spi_camera_t
*conf
, void* callback
, void *param
);
87 * @param id camera接收数据总线ID
92 int luat_camera_set_image_w_h(int id
, uint16_t w
, uint16_t h
);
95 * @brief 配置camera并且初始化camera,spi camera不要使用这个
96 * @param conf camera相关配置
99 int luat_camera_init(luat_camera_conf_t
*conf
);
102 * @brief 关闭camera并且释放资源
103 * @param id camera接收数据总线ID
106 int luat_camera_close(int id
);
109 * @brief 摄像头启动开始接收数据,csdk专用
110 * @param id camera接收数据总线ID
111 * @param buf 用户区地址,如果为NULL,则表示不存放到用户区
114 int luat_camera_start_with_buffer(int id
, void *buf
);
116 * @brief 摄像头切换接收数据缓冲区,csdk专用
117 * @param id camera接收数据总线ID
118 * @param buf 用户区地址,如果为NULL,则表示不存放到用户区
121 void luat_camera_continue_with_buffer(int id
, void *buf
);
123 * @brief 暂停接收camera数据
124 * @param id camera接收数据总线ID
125 * @param is_pause 非0暂停,0恢复
128 int luat_camera_pause(int id
, uint8_t is_pause
);
131 * @param type 扫码库型号,目前只支持0
132 * @param stack 扫码库任务的堆栈地址
133 * @param stack_length 扫码库任务的堆栈深度,type=0时需要至少220KB
134 * @param priority 扫码库任务优先级
137 int luat_camera_image_decode_init(uint8_t type
, void *stack
, uint32_t stack_length
, uint32_t priority
);
144 * @param callback 回调函数
148 int luat_camera_image_decode_once(uint8_t *data
, uint16_t image_w
, uint16_t image_h
, uint32_t timeout
, void *callback
, void *param
);
153 void luat_camera_image_decode_deinit(void);
159 int luat_camera_image_decode_get_result(uint8_t *buf
);
161 /**********以下是luatos使用,csdk不要使用***********/
163 * @brief 开始接收camera数据
164 * @param id camera接收数据总线ID
167 int luat_camera_start(int id
);
169 * @brief 停止接收camera数据
170 * @param id camera接收数据总线ID
173 int luat_camera_stop(int id
);
175 int luat_camera_preview(int id
, uint8_t on_off
);
177 int luat_camera_work_mode(int id
, int mode
);
179 int luat_camera_capture(int id
, uint8_t quality
, const char *path
);
181 int luat_camera_capture_in_ram(int id
, uint8_t quality
, void *buffer
);