Changeset a64c64d in mainline for uspace/srv/net/messages.h
- Timestamp:
- 2010-03-09T22:24:31Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 74520daf
- Parents:
- 9f2ea28
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/messages.h
r9f2ea28 ra64c64d 48 48 #include "structures/packet/packet.h" 49 49 50 /** @name Networking message counts51 */52 /*@{*/53 54 /** The number of network interface driver messages.55 */56 #define NET_NETIF_COUNT 657 58 /** The number of general networking messages.59 */60 #define NET_NET_COUNT 361 62 /** The number of network interface layer messages.63 */64 #define NET_NIL_COUNT 765 66 /** The number of Ethernet messages.67 */68 #define NET_ETH_COUNT 069 70 /** The number of inter-network messages.71 */72 #define NET_IL_COUNT 673 74 /** The number of IP messages.75 */76 #define NET_IP_COUNT 477 78 /** The number of ARP messages.79 */80 #define NET_ARP_COUNT 581 82 /** The number of ICMP messages.83 */84 #define NET_ICMP_COUNT 685 86 /** The number of transport layer messages.87 */88 #define NET_TL_COUNT 189 90 /** The number of UDP messages.91 */92 #define NET_UDP_COUNT 093 94 /** The number of TCP messages.95 */96 #define NET_TCP_COUNT 097 98 /** The number of packet management system messages.99 */100 #define NET_PACKET_COUNT 5101 102 /** The number of socket messages.103 */104 #define NET_SOCKET_COUNT 14105 106 /*@}*/107 108 /** @name Networking message intervals109 */110 /*@{*/111 112 /** The first networking message.113 */114 #define NET_FIRST 2000115 116 /** The first network interface layer message.117 */118 #define NET_NETIF_FIRST NET_FIRST119 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_LAST223 224 /** The number of networking messages.225 */226 #define NET_COUNT (NET_LAST - NET_FIRST)227 228 50 /** Returns a value indicating whether the value is in the interval. 229 51 * @param[in] item The value to be checked. … … 233 55 #define IS_IN_INTERVAL(item, first_inclusive, last_exclusive) (((item) >= (first_inclusive)) && ((item) < (last_exclusive))) 234 56 57 /** @name Networking message counts 58 */ 59 /*@{*/ 60 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 235 /** Returns a value indicating whether the IPC call is a generic networking message. 236 236 * @param[in] call The IPC call to be checked. … … 238 238 #define IS_NET_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_FIRST, NET_LAST) 239 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 240 265 /** Returns a value indicating whether the IPC call is a generic networking message. 241 266 * @param[in] call The IPC call to be checked. … … 248 273 #define IS_NET_NIL_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NIL_FIRST, NET_NIL_LAST) 249 274 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) 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) 274 289 275 290 /** Returns a value indicating whether the IPC call is a transport layer message. … … 283 298 #define IS_NET_UDP_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_UDP_FIRST, NET_UDP_LAST) 284 299 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 303 */ 304 /*@{*/ 305 306 /** Returns the device identifier message parameter. 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. 307 311 * @param[in] call The message call structure. 308 312 */ 309 313 #define IPC_GET_DEVICE(call) (device_id_t) IPC_GET_ARG1(*call) 310 314 311 /** Returns the packet identifier message parameter. 315 /*@}*/ 316 317 /** @name Second arguments 318 */ 319 /*@{*/ 320 321 /** Returns the packet identifier message argument. 312 322 * @param[in] call The message call structure. 313 323 */ 314 324 #define IPC_GET_PACKET(call) (packet_id_t) IPC_GET_ARG2(*call) 315 325 316 /** Returns the count message parameter.326 /** Returns the count message argument. 317 327 * @param[in] call The message call structure. 318 328 */ 319 329 #define IPC_GET_COUNT(call) (size_t) IPC_GET_ARG2(*call) 320 330 321 /** Returns the device state message parameter.331 /** Returns the device state message argument. 322 332 * @param[in] call The message call structure. 323 333 */ 324 334 #define IPC_GET_STATE(call) (device_state_t) IPC_GET_ARG2(*call) 325 335 326 /** Returns the maximum transmission unit message parameter.336 /** Returns the maximum transmission unit message argument. 327 337 * @param[in] call The message call structure. 328 338 */ 329 339 #define IPC_GET_MTU(call) (size_t) IPC_GET_ARG2(*call) 330 340 331 /** Returns the device driver service message parameter. 341 /*@}*/ 342 343 /** @name Third arguments 344 */ 345 /*@{*/ 346 347 /** Returns the device driver service message argument. 332 348 * @param[in] call The message call structure. 333 349 */ 334 350 #define IPC_GET_SERVICE(call) (services_t) IPC_GET_ARG3(*call) 335 351 336 /** Returns the target service message parameter.352 /** Returns the target service message argument. 337 353 * @param[in] call The message call structure. 338 354 */ 339 355 #define IPC_GET_TARGET(call) (services_t) IPC_GET_ARG3(*call) 340 356 341 /** Returns the sender service message parameter.357 /** Returns the sender service message argument. 342 358 * @param[in] call The message call structure. 343 359 */ 344 360 #define IPC_GET_SENDER(call) (services_t) IPC_GET_ARG3(*call) 345 361 346 /** Returns the error service message parameter. 362 /*@}*/ 363 364 /** @name Fourth arguments 365 */ 366 /*@{*/ 367 368 /** Returns the error service message argument. 347 369 * @param[in] call The message call structure. 348 370 */ 349 371 #define IPC_GET_ERROR(call) (services_t) IPC_GET_ARG4(*call) 350 372 351 /** Returns the phone message parameter. 373 /*@}*/ 374 375 /** @name Fifth arguments 376 */ 377 /*@{*/ 378 379 /** Returns the phone message argument. 352 380 * @param[in] call The message call structure. 353 381 */ 354 382 #define IPC_GET_PHONE(call) (int) IPC_GET_ARG5(*call) 383 384 /*@}*/ 385 386 /** @name First answers 387 */ 388 /*@{*/ 355 389 356 390 /** Sets the device identifier in the message answer. … … 364 398 #define IPC_SET_ADDR(answer) ((size_t *) &IPC_GET_ARG1(*answer)) 365 399 400 /*@}*/ 401 402 /** @name Second answers 403 */ 404 /*@{*/ 405 366 406 /** Sets the minimum prefix size in the message answer. 367 407 * @param[out] answer The message answer structure. … … 369 409 #define IPC_SET_PREFIX(answer) ((size_t *) &IPC_GET_ARG2(*answer)) 370 410 411 /*@}*/ 412 413 /** @name Third answers 414 */ 415 /*@{*/ 416 371 417 /** Sets the maximum content size in the message answer. 372 418 * @param[out] answer The message answer structure. … … 374 420 #define IPC_SET_CONTENT(answer) ((size_t *) &IPC_GET_ARG3(*answer)) 375 421 422 /*@}*/ 423 424 /** @name Fourth answers 425 */ 426 /*@{*/ 427 376 428 /** Sets the minimum suffix size in the message answer. 377 429 * @param[out] answer The message answer structure. … … 380 432 381 433 /*@}*/ 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 } 382 462 383 463 /** Returns the address. … … 399 479 return EBADMEM; 400 480 } 481 482 // request the address 401 483 message_id = async_send_1(phone, (ipcarg_t) message, (ipcarg_t) device_id, NULL); 402 484 string = measured_strings_return(phone, address, data, 1); 403 485 async_wait_for(message_id, &result); 486 487 // if not successful 404 488 if((string == EOK) && (result != EOK)){ 489 // clear the data 405 490 free(*address); 406 491 free(*data); 407 492 } 408 493 return (int) result; 494 } 495 496 /** Returns the device packet dimension for sending. 497 * @param[in] phone The service module phone. 498 * @param[in] message The service specific message. 499 * @param[in] device_id The device identifier. 500 * @param[out] packet_dimension The packet dimension. 501 * @returns EOK on success. 502 * @returns EBADMEM if the packet_dimension parameter is NULL. 503 * @returns Other error codes as defined for the specific service message. 504 */ 505 static inline int generic_packet_size_req(int phone, int message, device_id_t device_id, packet_dimension_ref packet_dimension){ 506 ipcarg_t result; 507 ipcarg_t prefix; 508 ipcarg_t content; 509 ipcarg_t suffix; 510 ipcarg_t addr_len; 511 512 if(! packet_dimension){ 513 return EBADMEM; 514 } 515 result = async_req_1_4(phone, (ipcarg_t) message, (ipcarg_t) device_id, &addr_len, &prefix, &content, &suffix); 516 packet_dimension->prefix = (size_t) prefix; 517 packet_dimension->content = (size_t) content; 518 packet_dimension->suffix = (size_t) suffix; 519 packet_dimension->addr_len = (size_t) addr_len; 520 return (int) result; 521 } 522 523 /** Passes the packet queue to the module. 524 * @param[in] phone The service module phone. 525 * @param[in] message The service specific message. 526 * @param[in] device_id The device identifier. 527 * @param[in] packet_id The received packet or the received packet queue identifier. 528 * @param[in] target The target module service. 529 * @param[in] error The error module service. 530 * @returns EOK on success. 531 */ 532 static inline int generic_received_msg(int phone, int message, device_id_t device_id, packet_id_t packet_id, services_t target, services_t error){ 533 if(error){ 534 async_msg_4(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) packet_id, (ipcarg_t) target, (ipcarg_t) error); 535 }else{ 536 async_msg_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) packet_id, (ipcarg_t) target); 537 } 538 return EOK; 539 } 540 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; 409 557 } 410 558 … … 436 584 return EBADMEM; 437 585 } 586 587 // request the translation 438 588 message_id = async_send_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) count, (ipcarg_t) service, NULL); 439 589 measured_strings_send(phone, configuration, count); 440 590 string = measured_strings_return(phone, translation, data, count); 441 591 async_wait_for(message_id, &result); 592 593 // if not successful 442 594 if((string == EOK) && (result != EOK)){ 595 // clear the data 443 596 free(*translation); 444 597 free(*data); 445 598 } 599 446 600 return (int) result; 447 601 } 448 602 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;465 }466 467 /** Returns the device packet dimension for sending.468 * @param[in] phone The service module phone.469 * @param[in] message The service specific message.470 * @param[in] device_id The device identifier.471 * @param[out] packet_dimension The packet dimension.472 * @returns EOK on success.473 * @returns EBADMEM if the packet_dimension parameter is NULL.474 * @returns Other error codes as defined for the specific service message.475 */476 static inline int generic_packet_size_req(int phone, int message, device_id_t device_id, packet_dimension_ref packet_dimension){477 ipcarg_t result;478 ipcarg_t prefix;479 ipcarg_t content;480 ipcarg_t suffix;481 ipcarg_t addr_len;482 483 if(! packet_dimension){484 return EBADMEM;485 }486 result = async_req_1_4(phone, (ipcarg_t) message, (ipcarg_t) device_id, &addr_len, &prefix, &content, &suffix);487 packet_dimension->prefix = (size_t) prefix;488 packet_dimension->content = (size_t) content;489 packet_dimension->suffix = (size_t) suffix;490 packet_dimension->addr_len = (size_t) addr_len;491 return (int) result;492 }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 507 /** Passes the packet queue to the module.508 * @param[in] phone The service module phone.509 * @param[in] message The service specific message.510 * @param[in] device_id The device identifier.511 * @param[in] packet_id The received packet or the received packet queue identifier.512 * @param[in] target The target module service.513 * @param[in] error The error module service.514 * @returns EOK on success.515 */516 static inline int generic_received_msg(int phone, int message, device_id_t device_id, packet_id_t packet_id, services_t target, services_t error){517 if(error){518 async_msg_4(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) packet_id, (ipcarg_t) target, (ipcarg_t) error);519 }else{520 async_msg_3(phone, (ipcarg_t) message, (ipcarg_t) device_id, (ipcarg_t) packet_id, (ipcarg_t) target);521 }522 return EOK;523 }524 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.532 * @returns Other error codes as defined for the specific service message.533 */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);536 }537 538 603 #endif 539 604
Note:
See TracChangeset
for help on using the changeset viewer.