source: titan/plugins/rgui/rgui.h @ 16075

Last change on this file since 16075 was 16075, checked in by nit, 9 years ago

[titan] update copyrigth

File size: 5.0 KB
Line 
1/*****************************************************/
2/* this file is part of the tiTan / tiTanNIT Project */
3/* and allowed only for use with this.               */
4/*                                                   */
5/* copyright by NIT                                  */
6/*****************************************************/
7
8#ifndef RGUI_H
9#define RGUI_H
10
11extern struct skin* skin;
12extern struct fb* skinfb;
13
14int screenrgui(char* ip)
15{
16        int rcret = -1, sock = -1, ret = 0, zlen = 0;
17        unsigned char* tmpstr = NULL, *buf = NULL;
18
19        if(ip == NULL || ostrcmp(ip, "000.000.000.000") == 0) return 1;
20
21        //clear screen
22        drawscreen(skin, 0);
23
24        struct fb* rguiskinfb = addfb("rguiskinfb", 1000, 440, 330, 4, -1, skinfb->fb, 440 * 330 * 4);
25        if(rguiskinfb == NULL) return 1;
26
27        ret = sockportopen(&sock, ip, getconfigint("rguidport", NULL), 5000 * 1000);
28        if(ret != 0)
29        {
30                textbox(_("Message"), _("Can't connect to server !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
31                sockclose(&sock);
32    delfb("rguiskinfb");
33                return 1;
34        }
35
36        buf = malloc(10);
37        if(buf == NULL)
38        {
39                sockclose(&sock);
40    delfb("rguiskinfb");
41                return 1;
42        }
43        memset(buf, 0, 10);
44
45        status.spinnertime = 99999999;
46
47        //send 0 byte sequenc to server for connect
48        socksend(&sock, buf, 6, 1000 * 1000);
49        usleep(5000);
50       
51        //send rcpower to wakeup remote box
52        tmpstr = (unsigned char*)getrcconfig("rcpower", NULL);
53        if(tmpstr != NULL)
54        {
55                memcpy(buf, tmpstr, strlen((char*)tmpstr));
56                ret = socksend(&sock, buf, 6, 1000 * 1000);
57                memset(buf, 0, 10);
58        }
59
60        while(1)
61        {
62                rcret = waitrc(NULL, 500, 0);
63
64                if(rcret == getrcconfigint("rcpower", NULL)) break;
65
66                if(rcret != RCTIMEOUT)
67                {
68                        tmpstr = (unsigned char*)oitoa(rcret);
69                        if(tmpstr != NULL)
70                        {
71                                memcpy(buf, tmpstr, strlen((char*)tmpstr));
72                                ret = socksend(&sock, buf, 6, 1000 * 1000);
73                                free(tmpstr); tmpstr = NULL;
74                                memset(buf, 0, 10);
75                                if(ret != 0)
76                                {
77                                        err("lost connection");
78                                        break;
79                                }
80                        }
81                }
82                else
83                {
84                        ret = sockread(sock, buf, 0, 10, 500 * 1000, 1);
85                       
86                        if(ret >= 0)
87                        {
88                                int count = atoi((char*)buf);
89                                memset(buf, 0, 10);
90                                if(count <= rguiskinfb->varfbsize)
91                                {
92                                        ret = sockread(sock, rguiskinfb->fb + rguiskinfb->varfbsize, 0, count, 500 * 1000, 1);
93                                        if(ret >= 0)
94                                        {
95                                                char* zbuf = (char*)rguiskinfb->fb;
96                                                ret = ounzip((char*)rguiskinfb->fb + rguiskinfb->varfbsize, count, &zbuf, &zlen, rguiskinfb->varfbsize, 1);
97                                                if(ret == 0)
98                                                        blitfb2(rguiskinfb, 0);
99
100                                                zlen = 0;
101                                        }
102                                }
103                                else
104                                        ret = -1;
105                        }
106
107                        if(ret < 0)
108                        {
109                                err("lost connection");
110                                break;
111                        }
112
113                }
114        }
115       
116        //clear screen
117        drawscreen(skin, 0);
118        if(textbox(_("Message"), _("Send remote box into standby ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
119        {
120                memcpy(buf, "98989", 5);
121                ret = socksend(&sock, buf, 6, 1000 * 1000);
122                memset(buf, 0, 10);
123                usleep(5000);
124        }
125
126        sockclose(&sock);
127        free(buf);
128        delfb("rguiskinfb");
129
130        //clear screen
131        drawscreen(skin, 0);
132        status.spinnertime = getconfigint("spinnertime", NULL);
133
134        textbox(_("Message"), _("Connection to server lost !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
135
136        return 0;
137}
138
139void screenrguimenu()
140{
141        int rcret = -1;
142        struct skin* rgui = getscreen("rgui");
143        struct skin* listbox = getscreennode(rgui, "listbox");
144        struct skin* rgui1 = getscreennode(rgui, "rgui1");
145        struct skin* rgui2 = getscreennode(rgui, "rgui2");
146        struct skin* rgui3 = getscreennode(rgui, "rgui3");
147        struct skin* rgui4 = getscreennode(rgui, "rgui4");
148        struct skin* rgui5 = getscreennode(rgui, "rgui5");
149        struct skin* tmp = NULL;
150        char* tmpstr = NULL;
151
152        changemask(rgui1, "000.000.000.000");
153        changeinput(rgui1, getconfig("rgui1", NULL));
154        changemask(rgui2, "000.000.000.000");
155        changeinput(rgui2, getconfig("rgui2", NULL));
156        changemask(rgui3, "000.000.000.000");
157        changeinput(rgui3, getconfig("rgui3", NULL));
158        changemask(rgui4, "000.000.000.000");
159        changeinput(rgui4, getconfig("rgui4", NULL));
160        changemask(rgui5, "000.000.000.000");
161        changeinput(rgui5, getconfig("rgui5", NULL));
162
163        drawscreen(rgui, 0);
164        addscreenrc(rgui, listbox);
165
166        tmp = listbox->select;
167        while(1)
168        {
169                addscreenrc(rgui, tmp);
170                rcret = waitrc(rgui, 0, 0);
171                tmp = listbox->select;
172
173                if(rcret == getrcconfigint("rcexit", NULL)) break;
174
175                if(rcret == getrcconfigint("rcok", NULL))
176                {
177                        addconfigscreencheck("rgui1", rgui1, "000.000.000.000");
178                        addconfigscreencheck("rgui2", rgui2, "000.000.000.000");
179                        addconfigscreencheck("rgui3", rgui3, "000.000.000.000");
180                        addconfigscreencheck("rgui4", rgui4, "000.000.000.000");
181                        addconfigscreencheck("rgui5", rgui5, "000.000.000.000");
182       
183                        if(listbox->select != NULL && listbox->select->ret != NULL)
184                        {
185                                tmpstr = fixip(listbox->select->ret, 1);
186                                screenrgui(tmpstr);
187                                free(tmpstr); tmpstr = NULL;
188                        }
189
190                        drawscreen(rgui, 0);
191                        continue;
192                }
193        }
194
195        delownerrc(rgui);
196        clearscreen(rgui);
197}
198
199#endif
Note: See TracBrowser for help on using the repository browser.