Rev 419 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
418 | lvd | 1 | #include <stdio.h> |
2 | #include <stdlib.h> |
||
419 | lvd | 3 | #include <errno.h> |
418 | lvd | 4 | |
5 | #include <sys/types.h> |
||
6 | #include <sys/socket.h> |
||
7 | #include <arpa/inet.h> |
||
8 | |||
9 | #include "sndpix.h" |
||
10 | |||
11 | DPI_LINK_DECL DPI_DLLESPEC |
||
12 | int |
||
13 | sndpix( |
||
14 | int hcoord, |
||
15 | int vcoord, |
||
16 | int rrggbb, |
||
17 | int hperiod, |
||
18 | int vperiod) |
||
19 | { |
||
419 | lvd | 20 | static int hsize=0,vsize=0; |
418 | lvd | 21 | |
419 | lvd | 22 | |
418 | lvd | 23 | static int need_init = 1; |
24 | static int sock_error=0; |
||
25 | static int mysocket; |
||
26 | struct sockaddr_in addr; |
||
27 | char buf[256]; |
||
28 | |||
29 | |||
419 | lvd | 30 | char * curbuf; |
31 | int tosend; |
||
32 | int socksent; |
||
418 | lvd | 33 | |
34 | |||
35 | |||
36 | if( need_init ) |
||
37 | { |
||
38 | need_init = 0; |
||
39 | |||
40 | |||
41 | mysocket = socket(AF_INET, SOCK_STREAM, 0); |
||
42 | |||
43 | if(mysocket<0) sock_error++; |
||
44 | |||
45 | |||
46 | addr.sin_family = AF_INET; |
||
47 | addr.sin_port = htons(12345); |
||
48 | // addr.sin_addr.s_addr = htonl(0xAC100594); //172.16.5.148 |
||
49 | addr.sin_addr.s_addr = htonl(0x7F000001); //127.0.0.1 |
||
50 | |||
51 | |||
52 | |||
53 | if( !sock_error) |
||
54 | { |
||
55 | if( connect(mysocket, (struct sockaddr *)&addr, sizeof(addr) ) ) |
||
56 | { |
||
57 | sock_error++; |
||
58 | } |
||
59 | } |
||
60 | } |
||
61 | |||
62 | |||
63 | |||
64 | if( !sock_error ) |
||
65 | { |
||
66 | // sprintf(buf,"%08X<=%08X:%08X with %02X\n",adr,dat_hi,dat_lo,sel); |
||
67 | |||
419 | lvd | 68 | buf[0] = 0; |
418 | lvd | 69 | |
419 | lvd | 70 | if( (hperiod>0) && (vperiod>0) ) |
71 | { |
||
72 | if( (hperiod!=hsize) || (vperiod!=vsize) ) |
||
73 | { |
||
74 | hsize = hperiod; |
||
75 | vsize = vperiod; |
||
76 | |||
77 | sprintf(buf,"s%04X,%04X\n",hsize,vsize); |
||
78 | } |
||
79 | } |
||
80 | |||
81 | if( (hsize>0) && (vsize>0) ) |
||
82 | sprintf(buf+strlen(buf),"p%04X,%04X,%02X\n",hcoord,vcoord,rrggbb); |
||
83 | |||
84 | if( strlen(buf)>0 ) |
||
85 | { |
||
86 | tosend = strlen(buf); |
||
87 | curbuf = buf; |
||
88 | |||
89 | |||
90 | |||
91 | while( tosend>0 ) |
||
92 | { |
||
93 | socksent = send(mysocket, curbuf, tosend, 0); |
||
94 | |||
95 | if( socksent<=0 ) |
||
96 | { |
||
97 | sock_error++; |
||
98 | break; |
||
99 | } |
||
100 | |||
101 | tosend -= socksent; |
||
102 | curbuf += socksent; |
||
103 | } |
||
104 | |||
105 | // if( strlen(buf)!=socksent ) |
||
106 | // { |
||
107 | // printf("send() sent %d bytes, errno=%d\n",socksent,errno); |
||
108 | // sock_error++; |
||
109 | // } |
||
110 | } |
||
418 | lvd | 111 | } |
112 | else |
||
113 | { |
||
419 | lvd | 114 | // sock_error = 0; |
115 | // need_init = 1; |
||
418 | lvd | 116 | |
117 | if( mysocket>=0 ) |
||
118 | close(mysocket); |
||
119 | } |
||
120 | |||
121 | |||
122 | return 0; |
||
123 | } |
||
124 |