Changes in uspace/srv/net/messages.h [a64c64d:aadf01e] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/messages.h
ra64c64d raadf01e 48 48 #include "structures/packet/packet.h" 49 49 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 50 228 /** Returns a value indicating whether the value is in the interval. 51 229 * @param[in] item The value to be checked. … … 55 233 #define IS_IN_INTERVAL(item, first_inclusive, last_exclusive) (((item) >= (first_inclusive)) && ((item) < (last_exclusive))) 56 234 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 58 303 */ 59 304 /*@{*/ 60 305 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. 311 307 * @param[in] call The message call structure. 312 308 */ 313 309 #define IPC_GET_DEVICE(call) (device_id_t) IPC_GET_ARG1(*call) 314 310 315 /*@}*/ 316 317 /** @name Second arguments 318 */ 319 /*@{*/ 320 321 /** Returns the packet identifier message argument. 311 /** Returns the packet identifier message parameter. 322 312 * @param[in] call The message call structure. 323 313 */ 324 314 #define IPC_GET_PACKET(call) (packet_id_t) IPC_GET_ARG2(*call) 325 315 326 /** Returns the count message argument.316 /** Returns the count message parameter. 327 317 * @param[in] call The message call structure. 328 318 */ 329 319 #define IPC_GET_COUNT(call) (size_t) IPC_GET_ARG2(*call) 330 320 331 /** Returns the device state message argument.321 /** Returns the device state message parameter. 332 322 * @param[in] call The message call structure. 333 323 */ 334 324 #define IPC_GET_STATE(call) (device_state_t) IPC_GET_ARG2(*call) 335 325 336 /** Returns the maximum transmission unit message argument.326 /** Returns the maximum transmission unit message parameter. 337 327 * @param[in] call The message call structure. 338 328 */ 339 329 #define IPC_GET_MTU(call) (size_t) IPC_GET_ARG2(*call) 340 330 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. 348 332 * @param[in] call The message call structure. 349 333 */ 350 334 #define IPC_GET_SERVICE(call) (services_t) IPC_GET_ARG3(*call) 351 335 352 /** Returns the target service message argument.336 /** Returns the target service message parameter. 353 337 * @param[in] call The message call structure. 354 338 */ 355 339 #define IPC_GET_TARGET(call) (services_t) IPC_GET_ARG3(*call) 356 340 357 /** Returns the sender service message argument.341 /** Returns the sender service message parameter. 358 342 * @param[in] call The message call structure. 359 343 */ 360 344 #define IPC_GET_SENDER(call) (services_t) IPC_GET_ARG3(*call) 361 345 362 /*@}*/ 363 364 /** @name Fourth arguments 365 */ 366 /*@{*/ 367 368 /** Returns the error service message argument. 346 /** Returns the error service message parameter. 369 347 * @param[in] call The message call structure. 370 348 */ 371 349 #define IPC_GET_ERROR(call) (services_t) IPC_GET_ARG4(*call) 372 350 373 /*@}*/ 374 375 /** @name Fifth arguments 376 */ 377 /*@{*/ 378 379 /** Returns the phone message argument. 351 /** Returns the phone message parameter. 380 352 * @param[in] call The message call structure. 381 353 */ 382 354 #define IPC_GET_PHONE(call) (int) IPC_GET_ARG5(*call) 383 384 /*@}*/385 386 /** @name First answers387 */388 /*@{*/389 355 390 356 /** Sets the device identifier in the message answer. … … 398 364 #define IPC_SET_ADDR(answer) ((size_t *) &IPC_GET_ARG1(*answer)) 399 365 400 /*@}*/401 402 /** @name Second answers403 */404 /*@{*/405 406 366 /** Sets the minimum prefix size in the message answer. 407 367 * @param[out] answer The message answer structure. … … 409 369 #define IPC_SET_PREFIX(answer) ((size_t *) &IPC_GET_ARG2(*answer)) 410 370 411 /*@}*/412 413 /** @name Third answers414 */415 /*@{*/416 417 371 /** Sets the maximum content size in the message answer. 418 372 * @param[out] answer The message answer structure. … … 420 374 #define IPC_SET_CONTENT(answer) ((size_t *) &IPC_GET_ARG3(*answer)) 421 375 422 /*@}*/423 424 /** @name Fourth answers425 */426 /*@{*/427 428 376 /** Sets the minimum suffix size in the message answer. 429 377 * @param[out] answer The message answer structure. … … 432 380 433 381 /*@}*/ 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 }462 382 463 383 /** Returns the address. … … 479 399 return EBADMEM; 480 400 } 481 482 // request the address483 401 message_id = async_send_1(phone, (ipcarg_t) message, (ipcarg_t) device_id, NULL); 484 402 string = measured_strings_return(phone, address, data, 1); 485 403 async_wait_for(message_id, &result); 486 487 // if not successful488 404 if((string == EOK) && (result != EOK)){ 489 // clear the data490 405 free(*address); 491 406 free(*data); 492 407 } 493 408 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 */ 427 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){ 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 */ 458 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){ 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; 494 465 } 495 466 … … 521 492 } 522 493 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 */ 502 static 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 523 507 /** Passes the packet queue to the module. 524 508 * @param[in] phone The service module phone. … … 539 523 } 540 524 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. 573 532 * @returns Other error codes as defined for the specific service message. 574 533 */ 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; 534 static 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); 601 536 } 602 537
Note:
See TracChangeset
for help on using the changeset viewer.