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