POK
blackboarddisplay.c
1 /*
2  * POK header
3  *
4  * The following file is a part of the POK project. Any modification should
5  * made according to the POK licence. You CANNOT use this file or a part of
6  * this file is this part of a file for your own project
7  *
8  * For more information on the POK licence, please see our LICENCE FILE
9  *
10  * Please follow the coding guidelines described in doc/CODING_GUIDELINES
11  *
12  * Copyright (c) 2007-2009 POK team
13  *
14  * Created by julien on Thu Jan 15 23:34:13 2009
15  */
16 
17 #include <core/dependencies.h>
18 
19 #ifdef POK_NEEDS_MIDDLEWARE
20 #ifdef POK_NEEDS_BLACKBOARDS
21 #include <types.h>
22 #include <errno.h>
23 #include <core/event.h>
24 #include <libc/string.h>
25 #include <middleware/blackboard.h>
26 
27 extern pok_blackboard_t pok_blackboards[POK_CONFIG_NB_BLACKBOARDS];
28 extern char pok_blackboards_data[1024];
29 
30 
31 pok_ret_t pok_blackboard_display (const pok_blackboard_id_t id,
32  const void* message,
33  const pok_port_size_t len)
34 {
35 
36  if (id > POK_CONFIG_NB_BLACKBOARDS)
37  {
38  return POK_ERRNO_EINVAL;
39  }
40 
41  if (message == NULL)
42  {
43  return POK_ERRNO_EINVAL;
44  }
45 
46  if (len > pok_blackboards[id].size)
47  {
48  return POK_ERRNO_SIZE;
49  }
50 
51  if (pok_blackboards[id].ready != TRUE)
52  {
53  return POK_ERRNO_EINVAL;
54  }
55 
56  pok_event_lock (pok_blackboards[id].lock);
57 
58  memcpy (&pok_blackboards_data[pok_blackboards[id].index], message, len);
59 
60  pok_event_unlock (pok_blackboards[id].lock);
61 
62  return POK_ERRNO_OK;
63 }
64 
65 #endif
66 #endif