PS2SDK
PS2 Homebrew Libraries
ps2cam.h
Go to the documentation of this file.
1 /*
2  PSX2 OpenSource Project
3  (C)2004 lion[PS2Dev]
4  (C)2004 PS2Dev.org
5 */
6 
12 #ifndef __PS2CAM_H__
13 #define __PS2CAM_H__
14 
15 #include <types.h>
16 
17 //rpc call id
19 #define PS2CAM_RPC_GETIRXVERSION 40
20 
21 #define PS2CAM_RPC_INITIALIZE 41
22 
23 #define PS2CAM_RPC_GETDEVCOUNT 42
24 #define PS2CAM_RPC_OPENDEVICE 43
25 #define PS2CAM_RPC_CLOSEDEVICE 44
26 
27 #define PS2CAM_RPC_GETDEVSTATUS 45
28 
29 #define PS2CAM_RPC_GETDEVINFO 46
30 
31 #define PS2CAM_RPC_SETDEVBANDWIDTH 47
32 
33 #define PS2CAM_RPC_READPACKET 48
34 
35 #define PS2CAM_RPC_SETLEDMODE 49
36 
37 #define PS2CAM_RPC_SETDEVCONFIG 50
38 
39 /* camera vendor(s) */
41 #define PS2CAM_VEND_SONY 0x054C
42 
43 #define PS2CAM_VEND_DLINK 0x05A9
44 
45 #define PS2CAM_VEND_LOGITECH 0x0000
46 
47 /* product id(s) */
49 #define PS2CAM_PROD_EYETOY 0x0154
50 
51 #define PS2CAM_PROD_EYETOY2 0x0155
52 
53 #define PS2CAM_PROD_EYETOY3 0x0156
54 
55 #define PS2CAM_PROD_EYETOY4 0x0157
56 
58 #define PS2CAM_PROD_VISUALSTREAM 0x8519
59 
60 // eyetoy regs
61 #define EYETOY_IREG_H_SIZE 0x10
62 #define EYETOY_IREG_V_SIZE 0x11
63 #define EYETOY_IREG_X_OFFSETL 0x12
64 #define EYETOY_IREG_X_OFFSETH 0x13
65 #define EYETOY_IREG_Y_OFFSETL 0x14
66 #define EYETOY_IREG_Y_OFFSETH 0x15
67 #define EYETOY_IREG_DIVIDER 0x16
68 #define EYETOY_IREG_DFR 0x20
69 #define EYETOY_IREG_SR 0x21
70 #define EYETOY_IREG_FRAR 0x22
71 #define EYETOY_IREG_FORMAT 0x25
72 
73 #define EYETOY_CREG_RESET0 0x50
74 #define EYETOY_CREG_RESET1 0x51
75 #define EYETOY_CREG_EN_CLK0 0x53
76 #define EYETOY_CREG_EN_CLK1 0x54
77 #define EYETOY_CREG_AUDIO_CLK 0x55
78 #define EYETOY_CREG_SNAPSHOT 0x57
79 #define EYETOY_CREG_PONOFF 0x58
80 #define EYETOY_CREG_CAMERA_CLK 0x59
81 #define EYETOY_CREG_CTRL1 0x5A
82 #define EYETOY_CREG_DEB_CLK 0x5B
83 #define EYETOY_CREG_CLK 0x5C
84 #define EYETOY_CREG_PWDN 0x5D
85 #define EYETOY_CREG_USR_DFN 0x5E
86 #define EYETOY_CREG_CTRL2 0x5F
87 #define EYETOY_CREG_INTERRUPT0 0x60
88 #define EYETOY_CREG_INTERRUPT1 0x61
89 #define EYETOY_CREG_MASK0 0x62
90 #define EYETOY_CREG_MASK1 0x63
91 #define EYETOY_CREG_VCI_R0 0x64
92 #define EYETOY_CREG_VCI_R1 0x65
93 #define EYETOY_CREG_ADC_CTRL 0x68
94 #define EYETOY_CREG_UC_CTRL 0x6D
95 
96 /* these reg control extra pins on chip(eg:red led) */
97 #define EYETOY_GPIO_DATA_OUT0 0x71
98 #define EYETOY_GPIO_IO_CTRL0 0x72
99 
100 //alternate settins(select butter size)
102 #define EYETOY_ALTERNATE_SIZE_0 0x00
103 #define EYETOY_ALTERNATE_SIZE_384 0x01
104 #define EYETOY_ALTERNATE_SIZE_512 0x02
105 #define EYETOY_ALTERNATE_SIZE_768 0x03
106 #define EYETOY_ALTERNATE_SIZE_896 0x04
107 
108 // device status
110 #define CAM_STATUS_NOTCONNECTED 0
111 
112 #define CAM_STATUS_CONNECTED 1
113 
114 #define CAM_STATUS_CONNECTEDREADY 2
115 
116 // used with PS2CAM_DEVICE_CONFIG->mask
117 #define CAM_CONFIG_MASK_DIMENSION 0x00000001
118 #define CAM_CONFIG_MASK_OFFSET 0x00000002
119 #define CAM_CONFIG_MASK_DIVIDER 0x00000004
120 #define CAM_CONFIG_MASK_FRAMERATE 0x00000008
121 
122 // error codes
124 #define CAM_ERROR_NONE (00)
125 #define CAM_ERROR_NOTINIT -(20)
126 #define CAM_ERROR_INVALIDDEVICE -(21)
127 
128 #define CAM_ERROR_COMMUNKNOWN -(22)
129 
130 #define CAM_ERROR_DEVNOTREADY -(23)
131 
132 #define CAM_ERROR_NODEVICE -(24)
133 
134 #define CAM_ERROR_BADRANGE -(25)
135 
136 #define CAM_ERROR_UNKNOWN -(26)
137 
138 #define CAM_ERROR_MAXHANDLE -(27)
139 
140 #define CAM_ERROR_BADHANDLE -(28)
141 
142 #define CAM_ERROR_DISCONNECTED -(29)
143 
144 typedef struct
145 {
147  unsigned int ssize;
148  unsigned short vendor_id;
149  unsigned short product_id;
150  unsigned char vendor_name[32];
151  unsigned char product_name[32];
152  unsigned char model[16];
154 
155 typedef struct
156 {
157  int device_id;
158  int config_id;
159  int status;
160  int bandwidth;
161  int stream_pocket_size;
162 
164  int controll;
166  int stream;
167 
169  int result;
170  int bytes;
171  void *arg;
173 
174 typedef struct
175 {
176  int fd;
177  int status;
178  CAMERA_DEVICE *cam;
180 
181 typedef struct
182 {
184  unsigned int ssize;
185  unsigned int mask;
187  unsigned short width;
189  unsigned short height;
191  unsigned short x_offset;
193  unsigned short y_offset;
195  unsigned char h_divider;
197  unsigned char v_divider;
199  unsigned short framerate;
200 
202 
203 typedef struct
204 {
206  unsigned char magic1;
208  unsigned char magic2;
210  unsigned char magic3;
212  unsigned char type;
213  unsigned char uk1;
214  unsigned char uk2;
215  unsigned char uk3;
216  unsigned char uk4;
217  unsigned char uk5;
219  unsigned char frame;
220  unsigned char uk6;
221  unsigned char uk7;
222  unsigned char uk8;
223  unsigned char uk9;
225  unsigned char Lo;
227  unsigned char Hi;
229 
230 #define camSetDIVIDER(p, hdiv, en_lpf, vdiv, en_sa) setReg8((p), EYETOY_IREG_DIVIDER, \
231  ((unsigned char)(hdiv) <<0)|\
232  ((unsigned char)(en_lpf) <<3)|\
233  ((unsigned char)(vdiv) <<4)|\
234  ((unsigned char)(en_sa) <<7));
235 
236 extern void rpcMainThread(void* param);
237 extern void *rpcCommandHandler(u32 command, void *buffer, int size);
238 
239 // usbd.irx calls
240 extern int PS2CamInitDriver();
241 extern int PS2CamProbe(int devId);
242 extern int PS2CamConnect(int devId);
243 extern int PS2CamDisconnect(int devId);
244 extern void PS2CamGetDeviceSring(CAMERA_DEVICE* dev, int index, char *str, int strmax);
245 
246 //private funtions
247 extern void PS2CamCallback(int resultCode, int bytes, void *arg);
248 extern void PS2CamSetDeviceConfiguration(CAMERA_DEVICE *dev,int id);
249 extern void PS2CamInitializeNewDevice(CAMERA_DEVICE *argv);
250 extern void PS2CamSetDeviceDefaults(CAMERA_DEVICE *dev);
251 extern int PS2CamGetIRXVersion(void);
252 extern int PS2CamInit(int mode);
253 extern int PS2CamGetDeviceCount(void);
254 extern int PS2CamOpenDevice(int device_index);
255 extern int PS2CamCloseDevice(int handle);
256 extern int PS2CamGetDeviceInfo(int handle,int *info);
257 
258 // low level camera funtions
259 extern int setReg8(CAMERA_DEVICE *dev, unsigned char reg_id, unsigned char value);
260 extern int getReg8(CAMERA_DEVICE *dev, unsigned char reg_id, unsigned char *value);
261 extern int setReg8Mask(CAMERA_DEVICE *dev, unsigned char reg_id, unsigned char value,unsigned char mask);
262 extern int setReg16(CAMERA_DEVICE *dev, unsigned char reg_id, unsigned short value);
263 extern int PS2CamSelectInterface(CAMERA_DEVICE* dev, int interface, int altSetting);
264 
265 extern void camResetDevice(CAMERA_DEVICE *dev);
266 extern void camEnableAutoLaunch(CAMERA_DEVICE *dev);
267 extern void camDisableAutoLaunch(CAMERA_DEVICE *dev);
268 extern void camClearSnapButton(CAMERA_DEVICE *dev);
269 extern int camCheckAutoLaunch(CAMERA_DEVICE *dev);
270 extern void camEnableSystem(CAMERA_DEVICE *dev);
271 extern void camDisableSystem(CAMERA_DEVICE *dev);
272 extern void camResetUsb(CAMERA_DEVICE *dev);
273 extern void camSetUsbInit(CAMERA_DEVICE *dev);
274 extern void camSetUsbWork(CAMERA_DEVICE *dev);
275 extern void camTurnOnRedLed(CAMERA_DEVICE *dev);
276 extern void camTurnOffRedLed(CAMERA_DEVICE *dev);
277 extern void camBlockStream(CAMERA_DEVICE *dev);
278 extern void camStartStream(CAMERA_DEVICE *dev);
279 extern void camStopStream(CAMERA_DEVICE *dev);
280 
281 // PS2Cam rpc/export funtions
282 extern int PS2CamReadPacket(int device_id);
283 extern int PS2CamGetDeviceStatus(int device_id);
284 extern int PS2CamSetDeviceBandwidth(int device_id, char bandwidth);
285 extern int PS2CamSetLEDMode(int device_id, int mode);
286 extern int PS2CamSetDeviceConfig(int handle, void *config);
287 
288 #endif /* __PS2CAM_H__ */
camResetDevice
void camResetDevice(CAMERA_DEVICE *dev)
Definition: ps2cam.c:743
PS2CamSetDeviceConfiguration
void PS2CamSetDeviceConfiguration(CAMERA_DEVICE *dev, int id)
Definition: ps2cam.c:429
PS2CamInitializeNewDevice
void PS2CamInitializeNewDevice(CAMERA_DEVICE *argv)
Definition: ps2cam.c:382
PS2CamReadPacket
int PS2CamReadPacket(int device_id)
Definition: ps2cam_rpc.c:217
PS2CAM_DEVICE_HANDLE
Definition: ps2cam.h:174
camSetUsbWork
void camSetUsbWork(CAMERA_DEVICE *dev)
Definition: ps2cam.c:814
s_info
Definition: xprintf.c:78
PS2CamGetIRXVersion
int PS2CamGetIRXVersion(void)
Definition: ps2cam_rpc.c:87
getReg8
int getReg8(CAMERA_DEVICE *dev, unsigned char reg_id, unsigned char *value)
Definition: ps2cam.c:606
setReg8Mask
int setReg8Mask(CAMERA_DEVICE *dev, unsigned char reg_id, unsigned char value, unsigned char mask)
Definition: ps2cam.c:633
PS2CamGetDeviceSring
void PS2CamGetDeviceSring(CAMERA_DEVICE *dev, int index, char *str, int strmax)
Definition: ps2cam.c:674
camResetUsb
void camResetUsb(CAMERA_DEVICE *dev)
Definition: ps2cam.c:797
camTurnOnRedLed
void camTurnOnRedLed(CAMERA_DEVICE *dev)
Definition: ps2cam.c:823
PS2CamOpenDevice
int PS2CamOpenDevice(int device_index)
Definition: ps2cam_rpc.c:119
CAMERA_DEVICE::controll
int controll
Definition: ps2cam.h:164
PS2CamConnect
int PS2CamConnect(int devId)
Definition: ps2cam.c:213
camSetUsbInit
void camSetUsbInit(CAMERA_DEVICE *dev)
Definition: ps2cam.c:805
PS2CamInitDriver
int PS2CamInitDriver()
Definition: ps2cam.c:109
PS2CamSetDeviceConfig
int PS2CamSetDeviceConfig(int handle, void *config)
Definition: ps2cam.c:1354
PS2CAM_DEVICE_INFO
Definition: ps2cam_rpc.h:104
PS2CamCloseDevice
int PS2CamCloseDevice(int handle)
Definition: ps2cam_rpc.c:135
PS2CamCallback
void PS2CamCallback(int resultCode, int bytes, void *arg)
Definition: ps2cam.c:570
CAMERA_DEVICE::result
int result
Definition: ps2cam.h:169
PS2CamSelectInterface
int PS2CamSelectInterface(CAMERA_DEVICE *dev, int interface, int altSetting)
Definition: ps2cam.c:712
CAMERA_DEVICE
Definition: ps2cam.h:155
camDisableSystem
void camDisableSystem(CAMERA_DEVICE *dev)
Definition: ps2cam.c:790
PS2CamSetDeviceDefaults
void PS2CamSetDeviceDefaults(CAMERA_DEVICE *dev)
Definition: ps2cam.c:453
camStartStream
void camStartStream(CAMERA_DEVICE *dev)
Definition: ps2cam.c:837
PS2CamGetDeviceInfo
int PS2CamGetDeviceInfo(int handle, int *info)
Definition: ps2cam.c:1114
EYETOY_FRAME_HEAD
Definition: ps2cam_rpc.h:77
PS2CamDisconnect
int PS2CamDisconnect(int devId)
Definition: ps2cam.c:297
PS2CAM_DEVICE_CONFIG
Definition: ps2cam_rpc.h:121
CAMERA_DEVICE::stream
int stream
Definition: ps2cam.h:166
camTurnOffRedLed
void camTurnOffRedLed(CAMERA_DEVICE *dev)
Definition: ps2cam.c:830
PS2CamSetDeviceBandwidth
int PS2CamSetDeviceBandwidth(int device_id, char bandwidth)
Definition: ps2cam_rpc.c:195
camEnableSystem
void camEnableSystem(CAMERA_DEVICE *dev)
Definition: ps2cam.c:778
PS2CamSetLEDMode
int PS2CamSetLEDMode(int device_id, int mode)
Definition: ps2cam_rpc.c:245
PS2CamInit
int PS2CamInit(int mode)
Definition: ps2cam_rpc.c:37
PS2CamGetDeviceCount
int PS2CamGetDeviceCount(void)
Definition: ps2cam_rpc.c:103
PS2CamProbe
int PS2CamProbe(int devId)
Definition: ps2cam.c:143
PS2CamGetDeviceStatus
int PS2CamGetDeviceStatus(int device_id)
Definition: ps2cam_rpc.c:152
setReg8
int setReg8(CAMERA_DEVICE *dev, unsigned char reg_id, unsigned char value)
Definition: ps2cam.c:580