Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/messages.h

    ra64c64d raadf01e  
    4848#include "structures/packet/packet.h"
    4949
     50/** @name Networking message counts
     51 */
     52/*@{*/
     53
     54/** The number of network interface driver messages.
     55 */
     56#define NET_NETIF_COUNT         6
     57
     58/** The number of general networking messages.
     59 */
     60#define NET_NET_COUNT           3
     61
     62/** The number of network interface layer messages.
     63 */
     64#define NET_NIL_COUNT           7
     65
     66/** The number of Ethernet messages.
     67 */
     68#define NET_ETH_COUNT           0
     69
     70/** The number of inter-network messages.
     71 */
     72#define NET_IL_COUNT            6
     73
     74/** The number of IP messages.
     75 */
     76#define NET_IP_COUNT            4
     77
     78/** The number of ARP messages.
     79 */
     80#define NET_ARP_COUNT           5
     81
     82/** The number of ICMP messages.
     83 */
     84#define NET_ICMP_COUNT          6
     85
     86/** The number of transport layer messages.
     87 */
     88#define NET_TL_COUNT            1
     89
     90/** The number of UDP messages.
     91 */
     92#define NET_UDP_COUNT           0
     93
     94/** The number of TCP messages.
     95 */
     96#define NET_TCP_COUNT           0
     97
     98/** The number of packet management system messages.
     99 */
     100#define NET_PACKET_COUNT        5
     101
     102/** The number of socket messages.
     103 */
     104#define NET_SOCKET_COUNT        14
     105
     106/*@}*/
     107
     108/** @name Networking message intervals
     109 */
     110/*@{*/
     111
     112/** The first networking message.
     113 */
     114#define NET_FIRST                       2000
     115
     116/** The first network interface layer message.
     117 */
     118#define NET_NETIF_FIRST         NET_FIRST
     119
     120/** The last network interface layer message.
     121 */
     122#define NET_NETIF_LAST          (NET_NETIF_FIRST + NET_NETIF_COUNT)
     123
     124/** The first general networking message.
     125 */
     126#define NET_NET_FIRST           (NET_NETIF_LAST + 0)
     127
     128/** The last general networking message.
     129 */
     130#define NET_NET_LAST            (NET_NET_FIRST + NET_NET_COUNT)
     131
     132/** The first network interface layer message.
     133 */
     134#define NET_NIL_FIRST           (NET_NET_LAST + 0)
     135
     136/** The last network interface layer message.
     137 */
     138#define NET_NIL_LAST            (NET_NIL_FIRST + NET_NIL_COUNT)
     139
     140/** The first Ethernet message.
     141 */
     142#define NET_ETH_FIRST           (NET_NIL_LAST + 0)
     143
     144/** The last Ethernet message.
     145 */
     146#define NET_ETH_LAST            (NET_ETH_FIRST + NET_ETH_COUNT)
     147
     148/** The first inter-network message.
     149 */
     150#define NET_IL_FIRST            (NET_ETH_LAST + 0)
     151
     152/** The last inter-network message.
     153 */
     154#define NET_IL_LAST                     (NET_IL_FIRST + NET_IL_COUNT)
     155
     156/** The first IP message.
     157 */
     158#define NET_IP_FIRST            (NET_IL_LAST + 0)
     159
     160/** The last IP message.
     161 */
     162#define NET_IP_LAST                     (NET_IP_FIRST + NET_IP_COUNT)
     163
     164/** The first ARP message.
     165 */
     166#define NET_ARP_FIRST           (NET_IP_LAST + 0)
     167
     168/** The last ARP message.
     169 */
     170#define NET_ARP_LAST            (NET_ARP_FIRST + NET_ARP_COUNT)
     171
     172/** The first ICMP message.
     173 */
     174#define NET_ICMP_FIRST          (NET_ARP_LAST + 0)
     175
     176/** The last ICMP message.
     177 */
     178#define NET_ICMP_LAST           (NET_ICMP_FIRST + NET_ICMP_COUNT)
     179
     180/** The first ICMP message.
     181 */
     182#define NET_TL_FIRST            (NET_ICMP_LAST + 0)
     183
     184/** The last ICMP message.
     185 */
     186#define NET_TL_LAST                     (NET_TL_FIRST + NET_TL_COUNT)
     187
     188/** The first UDP message.
     189 */
     190#define NET_UDP_FIRST           (NET_TL_LAST + 0)
     191
     192/** The last UDP message.
     193 */
     194#define NET_UDP_LAST            (NET_UDP_FIRST + NET_UDP_COUNT)
     195
     196/** The first TCP message.
     197 */
     198#define NET_TCP_FIRST           (NET_UDP_LAST + 0)
     199
     200/** The last TCP message.
     201 */
     202#define NET_TCP_LAST            (NET_TCP_FIRST + NET_TCP_COUNT)
     203
     204/** The first socket message.
     205 */
     206#define NET_SOCKET_FIRST        (NET_TCP_LAST + 0)
     207
     208/** The last socket message.
     209 */
     210#define NET_SOCKET_LAST         (NET_SOCKET_FIRST + NET_SOCKET_COUNT)
     211
     212/** The first packet management system message.
     213 */
     214#define NET_PACKET_FIRST        (NET_SOCKET_LAST + 0)
     215
     216/** The last packet management system message.
     217 */
     218#define NET_PACKET_LAST         (NET_PACKET_FIRST + NET_PACKET_COUNT)
     219
     220/** The last networking message.
     221 */
     222#define NET_LAST                        NET_PACKET_LAST
     223
     224/** The number of networking messages.
     225 */
     226#define NET_COUNT                       (NET_LAST - NET_FIRST)
     227
    50228/** Returns a value indicating whether the value is in the interval.
    51229 *  @param[in] item The value to be checked.
     
    55233#define IS_IN_INTERVAL(item, first_inclusive, last_exclusive)   (((item) >= (first_inclusive)) && ((item) < (last_exclusive)))
    56234
    57 /** @name Networking message counts
     235/** Returns a value indicating whether the IPC call is a generic networking message.
     236 *  @param[in] call The IPC call to be checked.
     237 */
     238#define IS_NET_MESSAGE(call)                    IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_FIRST, NET_LAST)
     239
     240/** Returns a value indicating whether the IPC call is a generic networking message.
     241 *  @param[in] call The IPC call to be checked.
     242 */
     243#define IS_NET_NET_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NET_FIRST, NET_NET_LAST)
     244
     245/** Returns a value indicating whether the IPC call is a network interface layer message.
     246 *  @param[in] call The IPC call to be checked.
     247 */
     248#define IS_NET_NIL_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NIL_FIRST, NET_NIL_LAST)
     249
     250/** Returns a value indicating whether the IPC call is an Ethernet message.
     251 *  @param[in] call The IPC call to be checked.
     252 */
     253#define IS_NET_ETH_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ETH_FIRST, NET_ETH_LAST)
     254
     255/** Returns a value indicating whether the IPC call is an inter-network layer message.
     256 *  @param[in] call The IPC call to be checked.
     257 */
     258#define IS_NET_IL_MESSAGE(call)         IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_IL_FIRST, NET_IL_LAST)
     259
     260/** Returns a value indicating whether the IPC call is an IP message.
     261 *  @param[in] call The IPC call to be checked.
     262 */
     263#define IS_NET_IP_MESSAGE(call)         IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_IP_FIRST, NET_IP_LAST)
     264
     265/** Returns a value indicating whether the IPC call is an ARP message.
     266 *  @param[in] call The IPC call to be checked.
     267 */
     268#define IS_NET_ARP_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ARP_FIRST, NET_ARP_LAST)
     269
     270/** Returns a value indicating whether the IPC call is an ICMP message.
     271 *  @param[in] call The IPC call to be checked.
     272 */
     273#define IS_NET_ICMP_MESSAGE(call)               IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ICMP_FIRST, NET_ICMP_LAST)
     274
     275/** Returns a value indicating whether the IPC call is a transport layer message.
     276 *  @param[in] call The IPC call to be checked.
     277 */
     278#define IS_NET_TL_MESSAGE(call)         IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_TL_FIRST, NET_TL_LAST)
     279
     280/** Returns a value indicating whether the IPC call is a UDP message.
     281 *  @param[in] call The IPC call to be checked.
     282 */
     283#define IS_NET_UDP_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_UDP_FIRST, NET_UDP_LAST)
     284
     285/** Returns a value indicating whether the IPC call is a TCP message.
     286 *  @param[in] call The IPC call to be checked.
     287 */
     288#define IS_NET_TCP_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_TCP_FIRST, NET_TCP_LAST)
     289
     290/** Returns a value indicating whether the IPC call is a socket message.
     291 *  @param[in] call The IPC call to be checked.
     292 */
     293#define IS_NET_SOCKET_MESSAGE(call)     IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_SOCKET_FIRST, NET_SOCKET_LAST)
     294
     295/** Returns a value indicating whether the IPC call is a packet manaagement system message.
     296 *  @param[in] call The IPC call to be checked.
     297 */
     298#define IS_NET_PACKET_MESSAGE(call)     IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_PACKET_FIRST, NET_PACKET_LAST)
     299
     300/*@}*/
     301
     302/** @name Networking specific message parameters definitions
    58303 */
    59304/*@{*/
    60305
    61 /** The number of ARP messages.
    62  */
    63 #define NET_ARP_COUNT           5
    64 
    65 /** The number of Ethernet messages.
    66  */
    67 #define NET_ETH_COUNT           0
    68 
    69 /** The number of ICMP messages.
    70  */
    71 #define NET_ICMP_COUNT          6
    72 
    73 /** The number of inter-network messages.
    74  */
    75 #define NET_IL_COUNT            6
    76 
    77 /** The number of IP messages.
    78  */
    79 #define NET_IP_COUNT            4
    80 
    81 /** The number of general networking messages.
    82  */
    83 #define NET_NET_COUNT           3
    84 
    85 /** The number of network interface driver messages.
    86  */
    87 #define NET_NETIF_COUNT         6
    88 
    89 /** The number of network interface layer messages.
    90  */
    91 #define NET_NIL_COUNT           7
    92 
    93 /** The number of packet management system messages.
    94  */
    95 #define NET_PACKET_COUNT        5
    96 
    97 /** The number of socket messages.
    98  */
    99 #define NET_SOCKET_COUNT        14
    100 
    101 /** The number of TCP messages.
    102  */
    103 #define NET_TCP_COUNT           0
    104 
    105 /** The number of transport layer messages.
    106  */
    107 #define NET_TL_COUNT            1
    108 
    109 /** The number of UDP messages.
    110  */
    111 #define NET_UDP_COUNT           0
    112 
    113 /*@}*/
    114 
    115 /** @name Networking message intervals
    116  */
    117 /*@{*/
    118 
    119 /** The first networking message.
    120  */
    121 #define NET_FIRST                       2000
    122 
    123 /** The first network interface layer message.
    124  */
    125 #define NET_NETIF_FIRST         NET_FIRST
    126 
    127 /** The last network interface layer message.
    128  */
    129 #define NET_NETIF_LAST          (NET_NETIF_FIRST + NET_NETIF_COUNT)
    130 
    131 /** The first general networking message.
    132  */
    133 #define NET_NET_FIRST           (NET_NETIF_LAST + 0)
    134 
    135 /** The last general networking message.
    136  */
    137 #define NET_NET_LAST            (NET_NET_FIRST + NET_NET_COUNT)
    138 
    139 /** The first network interface layer message.
    140  */
    141 #define NET_NIL_FIRST           (NET_NET_LAST + 0)
    142 
    143 /** The last network interface layer message.
    144  */
    145 #define NET_NIL_LAST            (NET_NIL_FIRST + NET_NIL_COUNT)
    146 
    147 /** The first Ethernet message.
    148  */
    149 #define NET_ETH_FIRST           (NET_NIL_LAST + 0)
    150 
    151 /** The last Ethernet message.
    152  */
    153 #define NET_ETH_LAST            (NET_ETH_FIRST + NET_ETH_COUNT)
    154 
    155 /** The first inter-network message.
    156  */
    157 #define NET_IL_FIRST            (NET_ETH_LAST + 0)
    158 
    159 /** The last inter-network message.
    160  */
    161 #define NET_IL_LAST                     (NET_IL_FIRST + NET_IL_COUNT)
    162 
    163 /** The first IP message.
    164  */
    165 #define NET_IP_FIRST            (NET_IL_LAST + 0)
    166 
    167 /** The last IP message.
    168  */
    169 #define NET_IP_LAST                     (NET_IP_FIRST + NET_IP_COUNT)
    170 
    171 /** The first ARP message.
    172  */
    173 #define NET_ARP_FIRST           (NET_IP_LAST + 0)
    174 
    175 /** The last ARP message.
    176  */
    177 #define NET_ARP_LAST            (NET_ARP_FIRST + NET_ARP_COUNT)
    178 
    179 /** The first ICMP message.
    180  */
    181 #define NET_ICMP_FIRST          (NET_ARP_LAST + 0)
    182 
    183 /** The last ICMP message.
    184  */
    185 #define NET_ICMP_LAST           (NET_ICMP_FIRST + NET_ICMP_COUNT)
    186 
    187 /** The first ICMP message.
    188  */
    189 #define NET_TL_FIRST            (NET_ICMP_LAST + 0)
    190 
    191 /** The last ICMP message.
    192  */
    193 #define NET_TL_LAST                     (NET_TL_FIRST + NET_TL_COUNT)
    194 
    195 /** The first UDP message.
    196  */
    197 #define NET_UDP_FIRST           (NET_TL_LAST + 0)
    198 
    199 /** The last UDP message.
    200  */
    201 #define NET_UDP_LAST            (NET_UDP_FIRST + NET_UDP_COUNT)
    202 
    203 /** The first TCP message.
    204  */
    205 #define NET_TCP_FIRST           (NET_UDP_LAST + 0)
    206 
    207 /** The last TCP message.
    208  */
    209 #define NET_TCP_LAST            (NET_TCP_FIRST + NET_TCP_COUNT)
    210 
    211 /** The first socket message.
    212  */
    213 #define NET_SOCKET_FIRST        (NET_TCP_LAST + 0)
    214 
    215 /** The last socket message.
    216  */
    217 #define NET_SOCKET_LAST         (NET_SOCKET_FIRST + NET_SOCKET_COUNT)
    218 
    219 /** The first packet management system message.
    220  */
    221 #define NET_PACKET_FIRST        (NET_SOCKET_LAST + 0)
    222 
    223 /** The last packet management system message.
    224  */
    225 #define NET_PACKET_LAST         (NET_PACKET_FIRST + NET_PACKET_COUNT)
    226 
    227 /** The last networking message.
    228  */
    229 #define NET_LAST                        NET_PACKET_LAST
    230 
    231 /** The number of networking messages.
    232  */
    233 #define NET_COUNT                       (NET_LAST - NET_FIRST)
    234 
    235 /** Returns a value indicating whether the IPC call is a generic networking message.
    236  *  @param[in] call The IPC call to be checked.
    237  */
    238 #define IS_NET_MESSAGE(call)                    IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_FIRST, NET_LAST)
    239 
    240 /** Returns a value indicating whether the IPC call is an ARP message.
    241  *  @param[in] call The IPC call to be checked.
    242  */
    243 #define IS_NET_ARP_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ARP_FIRST, NET_ARP_LAST)
    244 
    245 /** Returns a value indicating whether the IPC call is an Ethernet message.
    246  *  @param[in] call The IPC call to be checked.
    247  */
    248 #define IS_NET_ETH_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ETH_FIRST, NET_ETH_LAST)
    249 
    250 /** Returns a value indicating whether the IPC call is an ICMP message.
    251  *  @param[in] call The IPC call to be checked.
    252  */
    253 #define IS_NET_ICMP_MESSAGE(call)               IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ICMP_FIRST, NET_ICMP_LAST)
    254 
    255 /** Returns a value indicating whether the IPC call is an inter-network layer message.
    256  *  @param[in] call The IPC call to be checked.
    257  */
    258 #define IS_NET_IL_MESSAGE(call)         IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_IL_FIRST, NET_IL_LAST)
    259 
    260 /** Returns a value indicating whether the IPC call is an IP message.
    261  *  @param[in] call The IPC call to be checked.
    262  */
    263 #define IS_NET_IP_MESSAGE(call)         IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_IP_FIRST, NET_IP_LAST)
    264 
    265 /** Returns a value indicating whether the IPC call is a generic networking message.
    266  *  @param[in] call The IPC call to be checked.
    267  */
    268 #define IS_NET_NET_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NET_FIRST, NET_NET_LAST)
    269 
    270 /** Returns a value indicating whether the IPC call is a network interface layer message.
    271  *  @param[in] call The IPC call to be checked.
    272  */
    273 #define IS_NET_NIL_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NIL_FIRST, NET_NIL_LAST)
    274 
    275 /** Returns a value indicating whether the IPC call is a packet manaagement system message.
    276  *  @param[in] call The IPC call to be checked.
    277  */
    278 #define IS_NET_PACKET_MESSAGE(call)     IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_PACKET_FIRST, NET_PACKET_LAST)
    279 
    280 /** Returns a value indicating whether the IPC call is a socket message.
    281  *  @param[in] call The IPC call to be checked.
    282  */
    283 #define IS_NET_SOCKET_MESSAGE(call)     IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_SOCKET_FIRST, NET_SOCKET_LAST)
    284 
    285 /** Returns a value indicating whether the IPC call is a TCP message.
    286  *  @param[in] call The IPC call to be checked.
    287  */
    288 #define IS_NET_TCP_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_TCP_FIRST, NET_TCP_LAST)
    289 
    290 /** Returns a value indicating whether the IPC call is a transport layer message.
    291  *  @param[in] call The IPC call to be checked.
    292  */
    293 #define IS_NET_TL_MESSAGE(call)         IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_TL_FIRST, NET_TL_LAST)
    294 
    295 /** Returns a value indicating whether the IPC call is a UDP message.
    296  *  @param[in] call The IPC call to be checked.
    297  */
    298 #define IS_NET_UDP_MESSAGE(call)                IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_UDP_FIRST, NET_UDP_LAST)
    299 
    300 /*@}*/
    301 
    302 /** @name Networking specific message arguments definitions
    303  */
    304 /*@{*/
    305 
    306 /** @name First arguments
    307  */
    308 /*@{*/
    309 
    310 /** Returns the device identifier message argument.
     306/** Returns the device identifier message parameter.
    311307 *  @param[in] call The message call structure.
    312308 */
    313309#define IPC_GET_DEVICE(call)            (device_id_t) IPC_GET_ARG1(*call)
    314310
    315 /*@}*/
    316 
    317 /** @name Second arguments
    318  */
    319 /*@{*/
    320 
    321 /** Returns the packet identifier message argument.
     311/** Returns the packet identifier message parameter.
    322312 *  @param[in] call The message call structure.
    323313 */
    324314#define IPC_GET_PACKET(call)            (packet_id_t) IPC_GET_ARG2(*call)
    325315
    326 /** Returns the count message argument.
     316/** Returns the count message parameter.
    327317 *  @param[in] call The message call structure.
    328318 */
    329319#define IPC_GET_COUNT(call)             (size_t) IPC_GET_ARG2(*call)
    330320
    331 /** Returns the device state message argument.
     321/** Returns the device state message parameter.
    332322 *  @param[in] call The message call structure.
    333323 */
    334324#define IPC_GET_STATE(call)             (device_state_t) IPC_GET_ARG2(*call)
    335325
    336 /** Returns the maximum transmission unit message argument.
     326/** Returns the maximum transmission unit message parameter.
    337327 *  @param[in] call The message call structure.
    338328 */
    339329#define IPC_GET_MTU(call)                       (size_t) IPC_GET_ARG2(*call)
    340330
    341 /*@}*/
    342 
    343 /** @name Third arguments
    344  */
    345 /*@{*/
    346 
    347 /** Returns the device driver service message argument.
     331/** Returns the device driver service message parameter.
    348332 *  @param[in] call The message call structure.
    349333 */
    350334#define IPC_GET_SERVICE(call)           (services_t) IPC_GET_ARG3(*call)
    351335
    352 /** Returns the target service message argument.
     336/** Returns the target service message parameter.
    353337 *  @param[in] call The message call structure.
    354338 */
    355339#define IPC_GET_TARGET(call)            (services_t) IPC_GET_ARG3(*call)
    356340
    357 /** Returns the sender service message argument.
     341/** Returns the sender service message parameter.
    358342 *  @param[in] call The message call structure.
    359343 */
    360344#define IPC_GET_SENDER(call)            (services_t) IPC_GET_ARG3(*call)
    361345
    362 /*@}*/
    363 
    364 /** @name Fourth arguments
    365  */
    366 /*@{*/
    367 
    368 /** Returns the error service message argument.
     346/** Returns the error service message parameter.
    369347 *  @param[in] call The message call structure.
    370348 */
    371349#define IPC_GET_ERROR(call)             (services_t) IPC_GET_ARG4(*call)
    372350
    373 /*@}*/
    374 
    375 /** @name Fifth arguments
    376  */
    377 /*@{*/
    378 
    379 /** Returns the phone message argument.
     351/** Returns the phone message parameter.
    380352 *  @param[in] call The message call structure.
    381353 */
    382354#define IPC_GET_PHONE(call)             (int) IPC_GET_ARG5(*call)
    383 
    384 /*@}*/
    385 
    386 /** @name First answers
    387  */
    388 /*@{*/
    389355
    390356/** Sets the device identifier in the message answer.
     
    398364#define IPC_SET_ADDR(answer)            ((size_t *) &IPC_GET_ARG1(*answer))
    399365
    400 /*@}*/
    401 
    402 /** @name Second answers
    403  */
    404 /*@{*/
    405 
    406366/** Sets the minimum prefix size in the message answer.
    407367 *  @param[out] answer The message answer structure.
     
    409369#define IPC_SET_PREFIX(answer)  ((size_t *) &IPC_GET_ARG2(*answer))
    410370
    411 /*@}*/
    412 
    413 /** @name Third answers
    414  */
    415 /*@{*/
    416 
    417371/** Sets the maximum content size in the message answer.
    418372 *  @param[out] answer The message answer structure.
     
    420374#define IPC_SET_CONTENT(answer) ((size_t *) &IPC_GET_ARG3(*answer))
    421375
    422 /*@}*/
    423 
    424 /** @name Fourth answers
    425  */
    426 /*@{*/
    427 
    428376/** Sets the minimum suffix size in the message answer.
    429377 *  @param[out] answer The message answer structure.
     
    432380
    433381/*@}*/
    434 
    435 /*@}*/
    436 
    437 /** Notifies the module about the device state change.
    438  *  @param[in] phone The service module phone.
    439  *  @param[in] message The service specific message.
    440  *  @param[in] device_id The device identifier.
    441  *  @param[in] state The new device state.
    442  *  @param[in] target The target module service.
    443  *  @returns EOK on success.
    444  */
    445 static inline int generic_device_state_msg(int phone, int message, device_id_t device_id, int state, services_t target){
    446         async_msg_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) state, target);
    447         return EOK;
    448 }
    449 
    450 /** Notifies a module about the device.
    451  *  @param[in] phone The service module phone.
    452  *  @param[in] message The service specific message.
    453  *  @param[in] device_id The device identifier.
    454  *  @param[in] arg2 The second argument of the message.
    455  *  @param[in] service The device module service.
    456  *  @returns EOK on success.
    457  *  @returns Other error codes as defined for the specific service message.
    458  */
    459 static inline int generic_device_req(int phone, int message, device_id_t device_id, int arg2, services_t service){
    460         return (int) async_req_3_0(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) arg2, (ipcarg_t) service);
    461 }
    462382
    463383/** Returns the address.
     
    479399                return EBADMEM;
    480400        }
    481 
    482         // request the address
    483401        message_id = async_send_1(phone, (ipcarg_t) message, (ipcarg_t) device_id, NULL);
    484402        string = measured_strings_return(phone, address, data, 1);
    485403        async_wait_for(message_id, &result);
    486 
    487         // if not successful
    488404        if((string == EOK) && (result != EOK)){
    489                 // clear the data
    490405                free(*address);
    491406                free(*data);
    492407        }
    493408        return (int) result;
     409}
     410
     411/** Translates the given strings.
     412 *  Allocates and returns the needed memory block as the data parameter.
     413 *  @param[in] phone The service module phone.
     414 *  @param[in] message The service specific message.
     415 *  @param[in] device_id The device identifier.
     416 *  @param[in] service The module service.
     417 *  @param[in] configuration The key strings.
     418 *  @param[in] count The number of configuration keys.
     419 *  @param[out] translation The translated values.
     420 *  @param[out] data The translation data container.
     421 *  @returns EOK on success.
     422 *  @returns EINVAL if the configuration parameter is NULL.
     423 *  @returns EINVAL if the count parameter is zero (0).
     424 *  @returns EBADMEM if the translation or the data parameters are NULL.
     425 *  @returns Other error codes as defined for the specific service message.
     426 */
     427static inline int generic_translate_req(int phone, int message, device_id_t device_id, services_t service, measured_string_ref configuration, size_t count, measured_string_ref * translation, char ** data){
     428        aid_t message_id;
     429        ipcarg_t result;
     430        int string;
     431
     432        if(!(configuration && (count > 0))){
     433                return EINVAL;
     434        }
     435        if(!(translation && data)){
     436                return EBADMEM;
     437        }
     438        message_id = async_send_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) count, (ipcarg_t) service, NULL);
     439        measured_strings_send(phone, configuration, count);
     440        string = measured_strings_return(phone, translation, data, count);
     441        async_wait_for(message_id, &result);
     442        if((string == EOK) && (result != EOK)){
     443                free(*translation);
     444                free(*data);
     445        }
     446        return (int) result;
     447}
     448
     449/** Sends the packet queue.
     450 *  @param[in] phone The service module phone.
     451 *  @param[in] message The service specific message.
     452 *  @param[in] device_id The device identifier.
     453 *  @param[in] packet_id The packet or the packet queue identifier.
     454 *  @param[in] sender The sending module service.
     455 *  @param[in] error The error module service.
     456 *  @returns EOK on success.
     457 */
     458static inline int generic_send_msg(int phone, int message, device_id_t device_id, packet_id_t packet_id, services_t sender, services_t error){
     459        if(error){
     460                async_msg_4(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) packet_id, (ipcarg_t) sender, (ipcarg_t) error);
     461        }else{
     462                async_msg_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) packet_id, (ipcarg_t) sender);
     463        }
     464        return EOK;
    494465}
    495466
     
    521492}
    522493
     494/** Notifies the module about the device state change.
     495 *  @param[in] phone The service module phone.
     496 *  @param[in] message The service specific message.
     497 *  @param[in] device_id The device identifier.
     498 *  @param[in] state The new device state.
     499 *  @param[in] target The target module service.
     500 *  @returns EOK on success.
     501 */
     502static inline int generic_device_state_msg(int phone, int message, device_id_t device_id, int state, services_t target){
     503        async_msg_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) state, target);
     504        return EOK;
     505}
     506
    523507/** Passes the packet queue to the module.
    524508 *  @param[in] phone The service module phone.
     
    539523}
    540524
    541 /** Sends the packet queue.
    542  *  @param[in] phone The service module phone.
    543  *  @param[in] message The service specific message.
    544  *  @param[in] device_id The device identifier.
    545  *  @param[in] packet_id The packet or the packet queue identifier.
    546  *  @param[in] sender The sending module service.
    547  *  @param[in] error The error module service.
    548  *  @returns EOK on success.
    549  */
    550 static inline int generic_send_msg(int phone, int message, device_id_t device_id, packet_id_t packet_id, services_t sender, services_t error){
    551         if(error){
    552                 async_msg_4(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) packet_id, (ipcarg_t) sender, (ipcarg_t) error);
    553         }else{
    554                 async_msg_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) packet_id, (ipcarg_t) sender);
    555         }
    556         return EOK;
    557 }
    558 
    559 /** Translates the given strings.
    560  *  Allocates and returns the needed memory block as the data parameter.
    561  *  @param[in] phone The service module phone.
    562  *  @param[in] message The service specific message.
    563  *  @param[in] device_id The device identifier.
    564  *  @param[in] service The module service.
    565  *  @param[in] configuration The key strings.
    566  *  @param[in] count The number of configuration keys.
    567  *  @param[out] translation The translated values.
    568  *  @param[out] data The translation data container.
    569  *  @returns EOK on success.
    570  *  @returns EINVAL if the configuration parameter is NULL.
    571  *  @returns EINVAL if the count parameter is zero (0).
    572  *  @returns EBADMEM if the translation or the data parameters are NULL.
     525/** Notifies a module about the device.
     526 *  @param[in] phone The service module phone.
     527 *  @param[in] message The service specific message.
     528 *  @param[in] device_id The device identifier.
     529 *  @param[in] arg2 The second argument of the message.
     530 *  @param[in] service The device module service.
     531 *  @returns EOK on success.
    573532 *  @returns Other error codes as defined for the specific service message.
    574533 */
    575 static inline int generic_translate_req(int phone, int message, device_id_t device_id, services_t service, measured_string_ref configuration, size_t count, measured_string_ref * translation, char ** data){
    576         aid_t message_id;
    577         ipcarg_t result;
    578         int string;
    579 
    580         if(!(configuration && (count > 0))){
    581                 return EINVAL;
    582         }
    583         if(!(translation && data)){
    584                 return EBADMEM;
    585         }
    586 
    587         // request the translation
    588         message_id = async_send_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) count, (ipcarg_t) service, NULL);
    589         measured_strings_send(phone, configuration, count);
    590         string = measured_strings_return(phone, translation, data, count);
    591         async_wait_for(message_id, &result);
    592 
    593         // if not successful
    594         if((string == EOK) && (result != EOK)){
    595                 // clear the data
    596                 free(*translation);
    597                 free(*data);
    598         }
    599 
    600         return (int) result;
     534static inline int generic_device_req(int phone, int message, device_id_t device_id, int arg2, services_t service){
     535        return (int) async_req_3_0(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) arg2, (ipcarg_t) service);
    601536}
    602537
Note: See TracChangeset for help on using the changeset viewer.