Studio:Scl msg: Difference between revisions
Jump to navigation
Jump to search
(New page: == Examples == Five examples of the scl_msg pragma are shown below: # The first example uses the scl_msg pragma to define a set of messages without payloads. # The second ...) |
|||
| Line 3: | Line 3: | ||
Five examples of the scl_msg pragma are shown below: | Five examples of the scl_msg pragma are shown below: | ||
# The [[#Example_1|first]] | # The [[#Example_1|first example]] uses the scl_msg pragma to define a set of messages without payloads. | ||
# The second example uses the scl_msg pragma to define a one-way command and a two-way command/response. Both messages are defined with a command payload. | # The [[#Example_2|second example]] uses the scl_msg pragma to define a one-way command and a two-way command/response. Both messages are defined with a command payload. | ||
# The third example uses the scl_msg pragma to define a one-way-response, a two-way command/response and a broadcast response; all with message payloads. | # The [[#Example_3|third example]] uses the scl_msg pragma to define a one-way-response, a two-way command/response and a broadcast response; all with message payloads. | ||
# The fourth example uses the scl_msg pragma to define a two-way command/response with associated payloads. | # The [[#Example_4|fourth example]] uses the scl_msg pragma to define a two-way command/response with associated payloads. | ||
# The fifth example uses the scl_msg pragma and the void parameter to define a two-way command/response with a response payload and an empty command payload. | # The [[#Example_5|fifth example]] uses the scl_msg pragma and the void parameter to define a two-way command/response with a response payload and an empty command payload. | ||
=== Example 1 === | === Example 1 === | ||
Revision as of 23:43, 14 July 2008
Examples
Five examples of the scl_msg pragma are shown below:
- The first example uses the scl_msg pragma to define a set of messages without payloads.
- The second example uses the scl_msg pragma to define a one-way command and a two-way command/response. Both messages are defined with a command payload.
- The third example uses the scl_msg pragma to define a one-way-response, a two-way command/response and a broadcast response; all with message payloads.
- The fourth example uses the scl_msg pragma to define a two-way command/response with associated payloads.
- The fifth example uses the scl_msg pragma and the void parameter to define a two-way command/response with a response payload and an empty command payload.
Example 1
/* STRIDE Message IDs (SMIDs) defining messages without payloads */ /* SUID = 1, Message Type = One-way Command */ #define OneWayCmd 1 | srMT_ONEc /* SUID = 2, Message Type = One-way Response */ #define OneWayRsp 2 | srMT_ONEr /* SUID = 3, Message Type = Two-way Command/Response */ #define TwoWayMsg 3 | srMT_TWO /* SUID = 4, Message Type = Broadcast Response */ #define BrdCstRsp 4 | srMT_BRD /* Use the scl_msg pragma to identify the four messages without payloads */ #pragma scl_msg(1) #pragma scl_msg(2) #pragma scl_msg(3) #pragma scl_msg(4)
Example 2
/* STRIDE Message IDs (SMIDs) defining messages with command payloads. */
/* SUID = 1, Message Type = One-way Command, */
/* Command Send Type = By Pointer, Pointer Memory Usage = Private */
#define OneWayCmd 1 | srMT_ONEc | srST_CMD_PTR | srPU_CMD_PRI
/* SUID = 2, Message Type = Two-way Command/Response, */
/* Command Send Type = By Value */
#define TwoWayMsg 2 | srMT_TWO | srST_CMD_VAL
/* Structure defining the command payload used with both messages */
typedef struct {
int f1;
char f2;
} CmdPayload_t;
/* Use the scl_msg pragma to associate the command payload with both SMIDs */
#pragma scl_msg(1)
#pragma scl_msg(2)
Example 3
/* STRIDE Message IDs (SMIDs) defining messages with response payloads. */
/* SUID = 1, Message Type = One-way Response, */
/* Response Send Type = By Pointer, Pointer Memory Usage = Pool */
#define OneWayRsp 1 | srMT_ONEr | srST_RSP_PTR | srPU_RSP_POL
/* SUID = 2, Message Type = Two-way Command/Response, */
/* Command Send Type = No Payload, Response Send Type = By Value */
#define TwoWayMsg 2 | srMT_TWO | srST_RSP_VAL
/* SUID = 3, Message Type = Broadcast Response, */
/* Response Send Type = By Pointer, Pointer Memory Usage = Pool */
#define BrdCstRsp 3 | srMT_BRD | srST_RSP_PTR | srPU_RSP_POL
/* Structure defining the response payload used with the messages */
typedef struct {
int f1;
char f2;
} RspPayload_t;
/* Use the scl_msg pragma to associate the payload with each of the SMIDs */
#pragma scl_msg( 1, RspPayload_t )
#pragma scl_msg( 2, RspPayload_t )
#pragma scl_msg( 3, RspPayload_t )
Example 4
#include <sr.h>
/* STRIDE Message ID (SMID) defining a two-way message with */
/* with a command and a response payload. */
/* SUID = 1, Message Type = Two-way Command/Response, */
/* Command Send Type = By Value, Response Send Type = By Value */
#define TwoWayMsg 1 | srMT_TWO | srST_CMD_VAL | srST_RSP_VAL
/* Structure defining the command payload for the message */
typedef struct {
int f1;
char f2;
} CmdPayload_p;
/* Structure defining the response payload for the message */
typedef struct {
short f1;
float f2;
} RspPayload_r;
/* Use the scl_msg pragma to associate both payloads with the SMID */
#pragma scl_msg ( TwoWayMsg, CmdPayload_p, RspPayload_r )
Example 5
#include <sr.h>
/* STRIDE Message ID (SMID) defining a two-way message with */
/* with a command and a response payload. */
/* SUID = 1, Message Type = Two-way Command/Response, */
/* Command Send Type = By Value, Response Send Type = By Value */
#define TwoWayMsg 1 | srMT_TWO | srST_RSP_VAL
/* Structure defining the command payload for the message */
typedef struct {
int f1;
char f2;
} CmdPayload_p;
/* Structure defining the response payload for the message */
typedef struct {
short f1;
float f2;
} RspPayload_r;
/* Use the scl_msg pragma to associate both payloads with the SMID */
#pragma scl_msg ( TwoWayMsg, void, RspPayload_r )