blob: 3dbf1fc9c439f0fa324084d0fda087011e82d7cf [file] [log] [blame]
b.liu68a94c92025-05-24 12:53:41 +08001#include <stdio.h>
2#include <string.h>
3#include <strings.h>
4#include <stdlib.h>
5#include <errno.h>
6#include <fcntl.h>
7#include <signal.h>
8#include <sys/types.h>
9#include <unistd.h>
10#include <pthread.h>
11#include <termios.h>
12#include <time.h>
13#include <sys/ioctl.h>
14#include <dlfcn.h>
15#include <stdint.h>
16#include <stdbool.h>
17
18typedef enum{
19 GSW_HAL_PINDIR_IN,
20 GSW_HAL_PINDIR_OUT,
21}gsw_hal_pinDirection;
22
23typedef enum{
24 GSW_HAL_LEVEL_LOW,
25 GSW_HAL_LEVEL_HIGH,
26}gsw_hal_pinLevel;
27
28typedef enum{
29 GSW_HAL_PULL_NULL,
30 GSW_HAL_PULL_DOWN,
31 GSW_HAL_PULL_UP,
32}gsw_hal_pinPullSel;
33
34typedef enum{
35 GSW_HAL_USB_DISCONNECTED,
36 GSW_HAL_USB_CONNECTED,
37}gsw_hal_usbStatus;
38
39int32_t (*gsw_gpio_Init)(uint32_t, gsw_hal_pinDirection, gsw_hal_pinLevel);
40int32_t (*gsw_gpio_SetDirection)(uint32_t, gsw_hal_pinDirection);
41int32_t (*gsw_gpio_SetLevel)(uint32_t, gsw_hal_pinLevel);
42gsw_hal_pinLevel (*gsw_gpio_GetLevel)(uint32_t);
43gsw_hal_usbStatus (*gsw_hwpin_is_usb_connected)();
44int32_t (*gsw_setWakeupLevel)(gsw_hal_pinLevel);
45void *dlHandle_gpio;
46char *lynqLib_gpio = "/lib/libgsw_lib.so";
47
48int main(int argc,char **argv)
49{
50 int ret;
51 dlHandle_gpio = dlopen(lynqLib_gpio, RTLD_NOW);
52 if (argc == 4)
53 {
54 if (strcmp(argv[1], "D") == 0)
55 {
56 gsw_gpio_SetDirection=(int32_t(*)(uint32_t, gsw_hal_pinDirection))dlsym(dlHandle_gpio, "gsw_gpio_SetDirection");
57 ret = gsw_gpio_SetDirection(atoi(argv[2]), atoi(argv[3]));
58 if(ret < 0)
59 {
60 printf("gsw_gpio_SetDirection FAIL.\n");
61 return -1;
62 }
63 printf("gsw_gpio_SetDirection success.\n");
64 }
65 else if (strcmp(argv[1], "V") == 0)
66 {
67 gsw_gpio_SetLevel=(int32_t(*)(uint32_t, gsw_hal_pinLevel))dlsym(dlHandle_gpio, "gsw_gpio_SetLevel");
68 ret = gsw_gpio_SetLevel(atoi(argv[2]), atoi(argv[3]));
69 if(ret < 0)
70 {
71 printf("gsw_gpio_SetLevel FAIL.\n");
72 return -1;
73 }
74 printf("gsw_gpio_SetLevel success.\n");
75 }
76 else
77 {
78 gsw_gpio_Init=(int32_t(*)(uint32_t, gsw_hal_pinDirection, gsw_hal_pinLevel))dlsym(dlHandle_gpio, "gsw_gpio_Init");
79 ret = gsw_gpio_Init(atoi(argv[1]), atoi(argv[2]), atoi(argv[3]));
80 if(ret < 0)
81 {
82 printf("gsw_gpio_Init FAIL.\n");
83 return -1;
84 }
85 printf("gsw_gpio_Init success.\n");
86 }
87 }
88
89 else if (argc == 3)
90 {
91
92 if (strcmp(argv[1], "W") == 0)
93 {
94 gsw_setWakeupLevel=(int32_t(*)(gsw_hal_pinLevel))dlsym(dlHandle_gpio, "gsw_setWakeupLevel");
95 ret = gsw_setWakeupLevel(atoi(argv[2]));
96 if(ret < 0)
97 {
98 printf("gsw_setWakeupLevel FAIL.\n");
99 return -1;
100 }
101 printf("gsw_setWakeupLevel success.\n");
102 }
103 else
104 {
105 printf("error,please check input\n");
106 return -1;
107 }
108 }
109 else if (argc == 2)
110 {
111 if (strcmp(argv[1], "U") == 0)
112 {
113 gsw_hwpin_is_usb_connected=(gsw_hal_usbStatus(*)())dlsym(dlHandle_gpio, "gsw_hwpin_is_usb_connected");
114 ret = gsw_hwpin_is_usb_connected();
115 if(ret == 0)
116 {
117 printf("gsw_hwpin_is_usb_Unconnected ret = %d\n",ret);
118 return 0;
119 }
120 else
121 {
122 printf("gsw_hwpin_is_usb_connected.ret = %d\n",ret);
123 return 0;
124 }
125
126 }
127 else
128 {
129 gsw_gpio_GetLevel=(gsw_hal_pinLevel(*)(uint32_t))dlsym(dlHandle_gpio, "gsw_gpio_GetLevel");
130 ret = gsw_gpio_GetLevel(atoi(argv[1]));
131 if(ret < 0)
132 {
133 printf("gsw_gpio_GetLevel FAIL.\n");
134 return -1;
135 }
136 printf("gsw_gpio_GetLevel success.\n");
137 }
138 }
139 else
140 {
141 printf("error,please check input\n");
142 return -1;
143 }
144 return 0;
145}