1*53ee8cc1Swenshuai.xi //#include <nuttx/config.h>
2*53ee8cc1Swenshuai.xi #include <stdio.h>
3*53ee8cc1Swenshuai.xi //#include "MsTypes.h"
4*53ee8cc1Swenshuai.xi //#include "stdlib.h"
5*53ee8cc1Swenshuai.xi #include "utopia.h" // for utopia open/ioctl/close
6*53ee8cc1Swenshuai.xi #include "utopia_driver_id.h" // for module id
7*53ee8cc1Swenshuai.xi #include "MsOS.h" // for MsOS_ObtainMutex test
8*53ee8cc1Swenshuai.xi //#include "drvMMIO.h"
9*53ee8cc1Swenshuai.xi //#include <string.h>
10*53ee8cc1Swenshuai.xi //#include <unistd.h>
11*53ee8cc1Swenshuai.xi //#include "drvMIU.h"
12*53ee8cc1Swenshuai.xi
__aeabi_unwind_cpp_pr1(void)13*53ee8cc1Swenshuai.xi void __aeabi_unwind_cpp_pr1(void) {}
__aeabi_unwind_cpp_pr0(void)14*53ee8cc1Swenshuai.xi void __aeabi_unwind_cpp_pr0(void) {}
15*53ee8cc1Swenshuai.xi
16*53ee8cc1Swenshuai.xi #define SEM
17*53ee8cc1Swenshuai.xi //#define SYS_DMD_VD_MBX
18*53ee8cc1Swenshuai.xi //#define CMDQ
19*53ee8cc1Swenshuai.xi //#define SYS
20*53ee8cc1Swenshuai.xi
21*53ee8cc1Swenshuai.xi #ifdef SEM
22*53ee8cc1Swenshuai.xi #include "main_sem.h"
23*53ee8cc1Swenshuai.xi #endif
24*53ee8cc1Swenshuai.xi #ifdef SYS_DMD_VD_MBX
25*53ee8cc1Swenshuai.xi #endif
26*53ee8cc1Swenshuai.xi #ifdef CMDQ
27*53ee8cc1Swenshuai.xi #endif
28*53ee8cc1Swenshuai.xi #ifdef SYS
29*53ee8cc1Swenshuai.xi #include "main_sys.h"
30*53ee8cc1Swenshuai.xi #endif
31*53ee8cc1Swenshuai.xi
32*53ee8cc1Swenshuai.xi
main(int argc,char * argv[])33*53ee8cc1Swenshuai.xi int main(int argc, char *argv[])
34*53ee8cc1Swenshuai.xi {
35*53ee8cc1Swenshuai.xi unsigned int ret = 0;
36*53ee8cc1Swenshuai.xi UtopiaInit();
37*53ee8cc1Swenshuai.xi
38*53ee8cc1Swenshuai.xi void* pInstance = NULL;
39*53ee8cc1Swenshuai.xi void* pArgs = NULL;
40*53ee8cc1Swenshuai.xi
41*53ee8cc1Swenshuai.xi #ifdef SEM
42*53ee8cc1Swenshuai.xi // SEM
43*53ee8cc1Swenshuai.xi ret = UtopiaOpen(MODULE_SEM, &pInstance, 0, NULL);
44*53ee8cc1Swenshuai.xi if (!ret)
45*53ee8cc1Swenshuai.xi {
46*53ee8cc1Swenshuai.xi printf("something wrong in UtopiaOpen, error = %d\n", ret); // bob.fu
47*53ee8cc1Swenshuai.xi }
48*53ee8cc1Swenshuai.xi if(pInstance != NULL)
49*53ee8cc1Swenshuai.xi {
50*53ee8cc1Swenshuai.xi //sleep(5);
51*53ee8cc1Swenshuai.xi // try to use ioctl by the instance we got
52*53ee8cc1Swenshuai.xi ////////
53*53ee8cc1Swenshuai.xi pArgs = malloc(sizeof(SEM_RESETRESOURCE_PARAM));
54*53ee8cc1Swenshuai.xi
55*53ee8cc1Swenshuai.xi ((PSEM_GETRESOURCE_PARAM)(pArgs))->u8SemID = 0x07;
56*53ee8cc1Swenshuai.xi
57*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SEM_Reset_Resource, pArgs);
58*53ee8cc1Swenshuai.xi free(pArgs);
59*53ee8cc1Swenshuai.xi
60*53ee8cc1Swenshuai.xi ////////
61*53ee8cc1Swenshuai.xi pArgs = malloc(sizeof(SEM_GETRESOURCE_PARAM));
62*53ee8cc1Swenshuai.xi
63*53ee8cc1Swenshuai.xi ((PSEM_GETRESOURCE_PARAM)(pArgs))->u8SemID = 0x07;
64*53ee8cc1Swenshuai.xi ((PSEM_GETRESOURCE_PARAM)(pArgs))->u16ResId = 2;
65*53ee8cc1Swenshuai.xi
66*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SEM_Get_Resource, pArgs);
67*53ee8cc1Swenshuai.xi free(pArgs);
68*53ee8cc1Swenshuai.xi
69*53ee8cc1Swenshuai.xi /////////
70*53ee8cc1Swenshuai.xi /*
71*53ee8cc1Swenshuai.xi pArgs = malloc(sizeof(SEM_FREERESOURCE_PARAM));
72*53ee8cc1Swenshuai.xi
73*53ee8cc1Swenshuai.xi ((PSEM_GETRESOURCE_PARAM)(pArgs))->u8SemID = 0x07;
74*53ee8cc1Swenshuai.xi ((PSEM_GETRESOURCE_PARAM)(pArgs))->u16ResId = 1;
75*53ee8cc1Swenshuai.xi
76*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SEM_Free_Resource, pArgs);
77*53ee8cc1Swenshuai.xi free(pArgs);
78*53ee8cc1Swenshuai.xi */
79*53ee8cc1Swenshuai.xi
80*53ee8cc1Swenshuai.xi /////////
81*53ee8cc1Swenshuai.xi pArgs = malloc(sizeof(SEM_GETRESOURCEID_PARAM));
82*53ee8cc1Swenshuai.xi
83*53ee8cc1Swenshuai.xi ((PSEM_GETRESOURCEID_PARAM)(pArgs))->u8SemID = 0x07;
84*53ee8cc1Swenshuai.xi ((PSEM_GETRESOURCEID_PARAM)(pArgs))->pu16ResId = malloc(sizeof(MS_U16));
85*53ee8cc1Swenshuai.xi
86*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SEM_Get_ResourceID, pArgs);
87*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, u16ResId is %d\033[m\n", __PRETTY_FUNCTION__, __LINE__, *((PSEM_GETRESOURCEID_PARAM)(pArgs))->pu16ResId); // joe.liu
88*53ee8cc1Swenshuai.xi free(pArgs);
89*53ee8cc1Swenshuai.xi
90*53ee8cc1Swenshuai.xi /////////
91*53ee8cc1Swenshuai.xi pArgs = malloc(sizeof(MS_U32));
92*53ee8cc1Swenshuai.xi
93*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SEM_Get_Num, pArgs);
94*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, SEM_MAX_NUM is %d\033[m\n", __PRETTY_FUNCTION__, __LINE__, *((MS_U32 *)(pArgs))); // joe.liu
95*53ee8cc1Swenshuai.xi free(pArgs);
96*53ee8cc1Swenshuai.xi
97*53ee8cc1Swenshuai.xi
98*53ee8cc1Swenshuai.xi
99*53ee8cc1Swenshuai.xi
100*53ee8cc1Swenshuai.xi
101*53ee8cc1Swenshuai.xi
102*53ee8cc1Swenshuai.xi printf("\n\033[35mFunction = %s, Line = %d, Instance closing\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
103*53ee8cc1Swenshuai.xi UtopiaClose(pInstance);
104*53ee8cc1Swenshuai.xi }
105*53ee8cc1Swenshuai.xi else
106*53ee8cc1Swenshuai.xi {
107*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, No Instance can be closed\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
108*53ee8cc1Swenshuai.xi }
109*53ee8cc1Swenshuai.xi printf("\n%s, %d\n", __FUNCTION__, __LINE__); // bob.fu
110*53ee8cc1Swenshuai.xi #endif
111*53ee8cc1Swenshuai.xi
112*53ee8cc1Swenshuai.xi #ifdef SYS_DMD_VD_MBX
113*53ee8cc1Swenshuai.xi // SYS_DMD_VD_MBX
114*53ee8cc1Swenshuai.xi ret = UtopiaOpen(MODULE_SYS_DMD_VD_MBX, &pInstance, 0, NULL);
115*53ee8cc1Swenshuai.xi if (!ret)
116*53ee8cc1Swenshuai.xi {
117*53ee8cc1Swenshuai.xi printf("something wrong in UtopiaOpen, error = %d\n", ret); // bob.fu
118*53ee8cc1Swenshuai.xi }
119*53ee8cc1Swenshuai.xi if(pInstance != NULL)
120*53ee8cc1Swenshuai.xi {
121*53ee8cc1Swenshuai.xi sleep(5);
122*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, Instance closing\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
123*53ee8cc1Swenshuai.xi UtopiaClose(pInstance);
124*53ee8cc1Swenshuai.xi }
125*53ee8cc1Swenshuai.xi else
126*53ee8cc1Swenshuai.xi {
127*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, No Instance can be closed\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
128*53ee8cc1Swenshuai.xi }
129*53ee8cc1Swenshuai.xi printf("\n%s, %d\n", __FUNCTION__, __LINE__); // bob.fu
130*53ee8cc1Swenshuai.xi #endif
131*53ee8cc1Swenshuai.xi
132*53ee8cc1Swenshuai.xi #ifdef CMDQ
133*53ee8cc1Swenshuai.xi // CMDQ
134*53ee8cc1Swenshuai.xi ret = UtopiaOpen(MODULE_CMDQ, &pInstance, 0, NULL);
135*53ee8cc1Swenshuai.xi if (!ret)
136*53ee8cc1Swenshuai.xi {
137*53ee8cc1Swenshuai.xi printf("something wrong in UtopiaOpen, error = %d\n", ret); // bob.fu
138*53ee8cc1Swenshuai.xi }
139*53ee8cc1Swenshuai.xi if(pInstance != NULL)
140*53ee8cc1Swenshuai.xi {
141*53ee8cc1Swenshuai.xi sleep(5);
142*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, Instance closing\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
143*53ee8cc1Swenshuai.xi UtopiaClose(pInstance);
144*53ee8cc1Swenshuai.xi }
145*53ee8cc1Swenshuai.xi else
146*53ee8cc1Swenshuai.xi {
147*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, No Instance can be closed\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
148*53ee8cc1Swenshuai.xi }
149*53ee8cc1Swenshuai.xi printf("\n%s, %d\n", __FUNCTION__, __LINE__); // bob.fu
150*53ee8cc1Swenshuai.xi #endif
151*53ee8cc1Swenshuai.xi
152*53ee8cc1Swenshuai.xi #ifdef SYS
153*53ee8cc1Swenshuai.xi // SYS
154*53ee8cc1Swenshuai.xi ret = UtopiaOpen(MODULE_SYS, &pInstance, 0, NULL);
155*53ee8cc1Swenshuai.xi if (!ret)
156*53ee8cc1Swenshuai.xi {
157*53ee8cc1Swenshuai.xi printf("something wrong in UtopiaOpen, error = %d\n", ret); // bob.fu
158*53ee8cc1Swenshuai.xi }
159*53ee8cc1Swenshuai.xi if(pInstance != NULL)
160*53ee8cc1Swenshuai.xi {
161*53ee8cc1Swenshuai.xi //sleep(5);
162*53ee8cc1Swenshuai.xi // try to use ioctl by the instance we got
163*53ee8cc1Swenshuai.xi pArgs = malloc(sizeof(int));
164*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SYS_GetChipRev, pArgs);
165*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, ChipRev is %d\033[m\n", __PRETTY_FUNCTION__, __LINE__, *(MS_U8 *)pArgs); // joe.liu
166*53ee8cc1Swenshuai.xi free(pArgs);
167*53ee8cc1Swenshuai.xi
168*53ee8cc1Swenshuai.xi pArgs = malloc(sizeof(int));
169*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SYS_GetChipID, pArgs);
170*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, ChipID vaule is %d\033[m\n", __PRETTY_FUNCTION__, __LINE__, *(MS_U16 *)pArgs); // joe.liu
171*53ee8cc1Swenshuai.xi free(pArgs);
172*53ee8cc1Swenshuai.xi
173*53ee8cc1Swenshuai.xi pArgs = malloc(10 * sizeof(int));
174*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SYS_GetInfo, pArgs);
175*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, Return address is %d\033[m\n", __PRETTY_FUNCTION__, __LINE__, pArgs); // joe.liu
176*53ee8cc1Swenshuai.xi free(pArgs);
177*53ee8cc1Swenshuai.xi
178*53ee8cc1Swenshuai.xi pArgs = malloc(20 * sizeof(int));
179*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstance, MDrv_CMD_SYS_GetLibVer, pArgs);
180*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, Return address is %d\033[m\n", __PRETTY_FUNCTION__, __LINE__, pArgs); // joe.liu
181*53ee8cc1Swenshuai.xi free(pArgs);
182*53ee8cc1Swenshuai.xi
183*53ee8cc1Swenshuai.xi printf("\n\033[35mFunction = %s, Line = %d, Instance closing\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
184*53ee8cc1Swenshuai.xi UtopiaClose(pInstance);
185*53ee8cc1Swenshuai.xi }
186*53ee8cc1Swenshuai.xi else
187*53ee8cc1Swenshuai.xi {
188*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d, No Instance can be closed\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
189*53ee8cc1Swenshuai.xi }
190*53ee8cc1Swenshuai.xi printf("\n%s, %d\n", __FUNCTION__, __LINE__); // bob.fu
191*53ee8cc1Swenshuai.xi #endif
192*53ee8cc1Swenshuai.xi
193*53ee8cc1Swenshuai.xi /*
194*53ee8cc1Swenshuai.xi // test for open second Instance
195*53ee8cc1Swenshuai.xi ret = UtopiaOpen(MODULE_CMDQ, &pInstance, 0, NULL);
196*53ee8cc1Swenshuai.xi if (!ret)
197*53ee8cc1Swenshuai.xi {
198*53ee8cc1Swenshuai.xi printf("something wrong in UtopiaOpen, error = %d\n", ret); // bob.fu
199*53ee8cc1Swenshuai.xi }
200*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
201*53ee8cc1Swenshuai.xi
202*53ee8cc1Swenshuai.xi // test for release Instance, then open again
203*53ee8cc1Swenshuai.xi UtopiaClose(pInstance);
204*53ee8cc1Swenshuai.xi ret = UtopiaOpen(MODULE_CMDQ, &pInstance, 0, NULL);
205*53ee8cc1Swenshuai.xi if (!ret)
206*53ee8cc1Swenshuai.xi {
207*53ee8cc1Swenshuai.xi printf("something wrong in UtopiaOpen, error = %d\n", ret); // bob.fu
208*53ee8cc1Swenshuai.xi }
209*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
210*53ee8cc1Swenshuai.xi
211*53ee8cc1Swenshuai.xi // test for open second Instance
212*53ee8cc1Swenshuai.xi ret = UtopiaOpen(MODULE_CMDQ, &pInstance, 0, NULL);
213*53ee8cc1Swenshuai.xi if (!ret)
214*53ee8cc1Swenshuai.xi {
215*53ee8cc1Swenshuai.xi printf("something wrong in UtopiaOpen, error = %d\n", ret); // bob.fu
216*53ee8cc1Swenshuai.xi }
217*53ee8cc1Swenshuai.xi printf("\033[35mFunction = %s, Line = %d\033[m\n", __PRETTY_FUNCTION__, __LINE__); // joe.liu
218*53ee8cc1Swenshuai.xi */
219*53ee8cc1Swenshuai.xi return 0;
220*53ee8cc1Swenshuai.xi }
221