Fix module loading
[ps4-sdk.git] / examples / camera / source / main.c
blob5352a0a6cf1f828bb7193941eaca4aa3b14c3710
1 /*
2 * PlayStation 4 Eye basic sample
3 * If sceCameraIsAttached return 0 and you try to call sceCameraOpen you will received a invalid handle 0xFFFFFFFF...
4 * debug is using udp log: socat udp-recv:18194 stdout on your host
5 * change your ip to receive udp logs in sceNetInetPton function
6 * It will open camera , it will start and it will try to get 10 frames, then it will stop and close the camera and return
7 * Output:
8 debugnet Initialized
9 Camera opened with handle: 1
10 Camera started led is in on :P
11 Frame 0 sceCameraGetFrameData return 0 fine we got a frame
12 Frame 1 sceCameraGetFrameData return 0 fine we got a frame
13 Frame 2 sceCameraGetFrameData return 0 fine we got a frame
14 Frame 3 sceCameraGetFrameData return 0 fine we got a frame
15 Frame 4 sceCameraGetFrameData return 0 fine we got a frame
16 Frame 5 sceCameraGetFrameData return 0 fine we got a frame
17 Frame 6 sceCameraGetFrameData return 0 fine we got a frame
18 Frame 7 sceCameraGetFrameData return 0 fine we got a frame
19 Frame 8 sceCameraGetFrameData return 0 fine we got a frame
20 Frame 9 sceCameraGetFrameData return 0 fine we got a frame
21 Camera stop led off
23 #include "ps4.h"
25 #define debug(sock, format, ...)\
26 do {\
27 char buffer[512];\
28 int size = sprintf(buffer, format, ##__VA_ARGS__);\
29 sceNetSend(sock, buffer, size, 0);\
30 } while(0)
32 int _main(void) {
33 // Init and resolve libraries
34 initKernel();
36 initLibc();
37 initNetwork();
38 initCamera();
41 // Connect to server and send message
42 char socketName[] = "debug";
44 struct sockaddr_in server;
46 //udp log to port 18194
47 server.sin_len = sizof(server);
48 server.sin_family = AF_INET;
49 sceNetInetPton(2, "192.168.1.3", &server.sin_addr);
50 server.sin_port = sceNetHtons(18194);
51 memset(server.sin_zero, 0, sizeof(server.sin_zero));
53 int sock = sceNetSocket(socketName, AF_INET, SOCK_DGRAM, 0);
54 sceNetConnect(sock, (struct sockaddr *)&server, sizeof(server));
56 debug(sock, "debugnet Initialized\n");
58 int handle;
59 int ret;
60 int count;
61 int index;
62 int modules[256];
64 //First we check if camera is attached it must return 1 if not we can't follow and return
65 ret = sceCameraIsAttached(0);
66 if(!ret)
69 debug(sock, "received error %08x\n", ret);
70 return ret;
73 //there is a check in libSceCamera.sprx it seems 0x0FF is the userid for service camera
74 handle = sceCameraOpen(0x0FF, 0, 0, NULL);
75 if(handle < 0)
77 debug(sock, "sceCameraOpen received error: %08x\n",handle);
78 return handle;
80 debug(sock, "Camera opened with handle: %d\n", handle);
81 //function check size and some values on unknown1 and unknown2 test and error you will get 802e0000 on bad values
82 SceCameraStartParameter param;
83 param.size = 0x18;
84 param.unknown1 = 0x08;
85 param.unknown2 = 0x08;
87 ret=sceCameraStart(handle, &param);
88 if(ret<0)
90 debug(sock, "sceCameraStart received error %08x\n", ret);
91 debug(sock, "Stop camera return %08x\n", sceCameraStop(handle));
92 debug(sock, "Closing camera return %08x\n", sceCameraClose(handle));
93 return ret;
95 debug(sock, "Camera started led is on :P\n");
96 //function check size it must be < 0x209 and correct values on unknown1. bad values or incorrect size and you will get get 0x802e0000
97 SceCameraFrameData frame;
98 frame.size = 0x208;
99 frame.unknown1 = 0;
100 for(index = 0; index < 10; index++)
102 ret=sceCameraGetFrameData(handle, &frame);
103 if(ret<0)
105 debug(sock, "Frame %d sceCameraGetFrameData received error %08x\n", index, ret);
108 else
110 debug(sock, "Frame %d sceCameraGetFrameData return %d fine we got a frame\n", index, ret);
113 ret=sceCameraStop(handle);
114 if(ret<0)
116 debug(sock, "received error %08x\n", ret);
119 debug(sock, "Camera stop led off\n");
121 sceCameraClose(handle);
124 sceNetSocketClose(sock);
127 // Return to browser
128 return 0;