e2a21a2a7d8bad7a082a53134837a15c1bea740d
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

1) #include <stdarg.h>
2) #include <stdio.h>
3) #include <unistd.h>
4) 
5) #include <flexipix/flexipix.h>
6) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

7) #ifdef WINDOWS
8) #include <winsock.h>
9) #endif
10) 
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

11) /* just an example for some data */
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

12) typedef struct userdata_s {
13)   int i;
14)   float f;
15)   char c;
16) } userdata_t;
17) 
18) /* callback function called during display creation,
19)    the p_ctx parameter is the userdata supplied in the call
20)    to flp_display_create() */
21) void msg(void *p_ctx, flp_msg_type_t type, const char *fmt, ...)
22) {
23)   userdata_t *p_userdata = (userdata_t *)p_ctx;
24)   va_list va;
25) 
26)   printf("msg (%d %f %c): ",
27)          p_userdata->i, p_userdata->f,
28)          p_userdata->c); /* make use of the userdata */
29) 
30)   /* type tells if the message is an error, a warning or an information */
31)   switch (type) {
32)     case flp_msg_type_err:
33)       printf("ERROR: ");
34)       break;
35)     case flp_msg_type_warn:
36)       printf("WARNING: ");
37)       break;
38)     case flp_msg_type_info:
39)       printf("INFORMATION: ");
40)       break;
41)   }
42) 
43)   /* fmt is a printf-style format string,
44)      the arguments are passed exactly as for printf */
45)   va_start(va, fmt);
46)   vprintf(fmt, va);
47)   va_end(va);
48) }
49) 
50) int main(int argc, char *argv[])
51) {
52)   const char *config;
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

53)   userdata_t userdata = { 42, 42.0, '!' }; /* just an example */
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

54)   flp_display_t *p_display;
55)   unsigned int width, height, i;
56)   flp_u8_t white[3] = { 255, 255, 255 };
57) 
58)   if (argc < 2) {
59)     printf("usage: %s <config.flp>\n", argv[0]);
60)     return -1;
61)   }
62)   config = argv[1];
63) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

64) #ifdef WINDOWS
65)   {
66)     WSADATA data;
67)     WSAStartup(MAKEWORD(1,1), &data);
68)   }
69) #endif
70) 
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

71)   /* create a display, take the configuration from a file,
72)      deliver messages to the callback function msg(),
73)      the last parameter is passed as first parameter to msg()
74)      and can be used to supply some user defined data */
75)   p_display = flp_display_create(config, msg, (void *)&userdata);
76)   if (!p_display) {
77)     printf("could not create display\n");
78)     return -1;
79)   }
80) 
81)   flp_display_get_size(p_display, &width, &height);
82)   printf("width:  %5u\nheight: %5u\n", width, height);
83) 
84)   printf("blink\n");
85)   for (i = 0; i < 5; ++i) {
86) 
87)     printf("on\n");
88)     flp_display_data(p_display, white, 0, 0, 0, 0, width, height);
89)     flp_display_send(p_display);
90)     usleep(100000);
91) 
92)     printf("off\n");
93)     flp_display_data_clear(p_display);
94)     flp_display_send(p_display);
95)     usleep(500000);
96) 
97)   } /* for (i ...) */
98)   printf("done\n");
99) 
100)   flp_display_free(p_display);
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

101) 
102) #ifdef WINDOWS
103)   WSACleanup();
104) #endif
105)