1 /*
2 *********************************************************************************************************
3 * MELIS
4 * the Easy Portable/Player Develop Kits
5 * WEBCAM Driver
6 *
7 * (c) Copyright 2012-2016, Kingvan.Tong China
8 * All Rights Reserved
9 *
10 * File : drv_webcam.h
11 * By : Kingvan
12 * Version : v1.0
13 * Date : 2012-9-27
14 * Descript:
15 * Update : date auther ver notes
16 * 2012-9-27 11:09:13 Kingvan.Tong 2.0 build the file.
17 *********************************************************************************************************
18 */
19
20 #include "drv_webcam_i.h"
21 #include <hal_osal.h>
22
23 extern __s32 WEBCAM_DEV_NODE_Init_Part1(void); //WEBCAM_DEV_NODE的初始化的第一部分
24 //extern __s32 WEBCAM_DEV_NODE_Init_Part2(__u32 webcam_channle,__u32 system);
25 extern __s32 WEBCAM_DEV_NODE_Exit(void);
26
27 extern __hdle DEV_WEBCAM_Open(void * open_arg, __u32 mode);
28 extern __s32 DEV_WEBCAM_Close(__hdle hwebcam);
29 extern __u32 DEV_WEBCAM_Read(void *pdata, __u32 size, __u32 n, __hdle hPower);
30 extern __u32 DEV_WEBCAM_Write(const void *pdata, __u32 size, __u32 n, __hdle hPower);
31 extern __s32 DEV_WEBCAM_Ioctrl(__hdle hPower, __u32 cmd, __s32 aux, void *pbuffer);
32 static __webcam_drv_t webcam_drv;
33
DRV_WEBCAM_MInit(void)34 __s32 DRV_WEBCAM_MInit(void)
35 {
36 extern void* esDEV_DevReg(const char *classname, const char *name, const __dev_devop_t *pDevOp, void *pOpenArg);
37 hal_log_info("DRV_WEBCAM_MInit\n");
38
39 //WEBCAM设备节点的初始化,此时这些设备均未注册
40 memset(&webcam_drv, 0, sizeof(__webcam_drv_t));
41 if(EPDK_OK == WEBCAM_DEV_NODE_Init_Part1())
42 {
43 webcam_drv.webcam_dev_entry.Open = DEV_WEBCAM_Open;
44 webcam_drv.webcam_dev_entry.Close = DEV_WEBCAM_Close;
45 webcam_drv.webcam_dev_entry.Read = DEV_WEBCAM_Read;
46 webcam_drv.webcam_dev_entry.Write = DEV_WEBCAM_Write;
47 webcam_drv.webcam_dev_entry.Ioctl = DEV_WEBCAM_Ioctrl;
48 }
49 else
50 {
51 goto _err0;
52 }
53 webcam_drv.used = 0;
54
55 if(webcam_drv.used)
56 {
57 hal_log_info("webcam already used!\n");
58 return EPDK_FAIL;
59 }
60 webcam_drv.hReg_WebcamDevHdl = (__hdle)esDEV_DevReg("UVC", "WEBCAM", &webcam_drv.webcam_dev_entry, 0);
61 if(!webcam_drv.hReg_WebcamDevHdl)
62 {
63 hal_log_info("user webcam registered Error!\n");
64 return EPDK_FAIL;
65 }
66 hal_log_info("drv webcam reg ok!\n");
67 // ret = WEBCAM_DEV_NODE_Init_Part2(aux,(__s32)pbuffer);
68 //
69 // if(ret != EPDK_OK)
70 // {
71 // return ret;
72 // }
73 // webcam_drv.used = 1;
74 hal_log_info("webcam drv plugin ok!\n");
75 return EPDK_OK;
76 _err0:
77 WEBCAM_DEV_NODE_Exit();
78 memset(&webcam_drv, 0, sizeof(__webcam_drv_t));
79 return EPDK_FAIL;
80 }
81
DRV_WEBCAM_MExit(void)82 __s32 DRV_WEBCAM_MExit(void)
83 {
84 hal_log_info("DRV_WEBCAM_MExit\n");
85 WEBCAM_DEV_NODE_Exit();
86 memset(&webcam_drv, 0, sizeof(__webcam_drv_t));
87 return EPDK_OK;
88 }
89
90 //__mp *DRV_WEBCAM_MOpen(__u32 mid, __u32 mod)
91 //{
92 // hal_log_info("DRV_WEBCAM_MOpen\n");
93 // webcam_drv.mid = mid;
94
95 // return (__mp *)&webcam_drv;
96 //}
97
98 //__s32 DRV_WEBCAM_MClose(__mp *mp)
99 //{
100 // hal_log_info("DRV_WEBCAM_MClose\n");
101 //
102 // return EPDK_OK;
103 //}
104
105 //__u32 DRV_WEBCAM_MRead(void *pdata, __u32 size, __u32 n, __mp *mp)
106 //{
107 // return EPDK_OK;
108 //}
109
110 //__u32 DRV_WEBCAM_MWrite(const void *pdata, __u32 size, __u32 n, __mp *mp)
111 //{
112 // return EPDK_OK;
113 //}
114
115 //__s32 DRV_WEBCAM_MIoctrl(__mp *mp, __u32 cmd, __s32 aux, void *pbuffer)
116 //{
117 // __s32 ret;
118
119 // switch(cmd)
120 // {
121 // case DRV_CMD_PLUGIN:
122 // {
123 // if(webcam_drv.used)
124 // {
125 // hal_log_info("webcam already used!\n");
126 // return EPDK_FAIL;
127 // }
128 // webcam_drv.hReg_WebcamDevHdl = esDEV_DevReg("UVC", "WEBCAM", &webcam_drv.webcam_dev_entry, 0);
129 // if(!webcam_drv.hReg_WebcamDevHdl)
130 // {
131 // hal_log_info("user webcam registered Error!\n");
132 // return EPDK_FAIL;
133 // }
134 // hal_log_info("drv webcam reg ok!\n");
135 //
136 // ret = WEBCAM_DEV_NODE_Init_Part2(aux,(__s32)pbuffer);
137 //
138 // if(ret != EPDK_OK)
139 // {
140 // return ret;
141 // }
142 // webcam_drv.used = 1;
143 //
144 // hal_log_info("webcam drv plugin ok!\n");
145 //
146 // return EPDK_OK;
147 // }
148
149 // case DRV_CMD_PLUGOUT:
150 // {
151 // hal_log_info("webcam DRV_CMD_PLUGOUT!\n");
152 // if(webcam_drv.used == 1)
153 // {
154 // __s32 ret ;
155 // if(!webcam_drv.hReg_WebcamDevHdl)
156 // {
157 // hal_log_info("Dev not plugin!\n");
158 // return EPDK_FAIL;
159 // }
160 //
161 // ret = esDEV_DevUnreg(webcam_drv.hReg_WebcamDevHdl);
162 // hal_log_info("ret=%d\n",ret);
163 // webcam_drv.hReg_WebcamDevHdl = NULL;
164 // WEBCAM_DEV_NODE_Exit();
165 // }
166 //
167 // webcam_drv.used = 0;
168 // return EPDK_OK;
169 // }
170
171 // case DRV_CMD_GET_STATUS:
172 // {
173 // hal_log_info("DRV_CMD_GET_STATUS\n");
174 // if(webcam_drv.used)
175 // {
176 // return DRV_STA_BUSY;
177 // }
178 // else
179 // {
180 // return DRV_STA_FREE;
181 // }
182 // }
183 // default:
184 // return EPDK_FAIL;
185 // }
186 //}
187
188