Echelon Neuron C Manuel d'utilisateur Page 154

  • Télécharger
  • Ajouter à mon manuel
  • Imprimer
  • Page
    / 268
  • Table des matières
  • MARQUE LIVRES
  • Noté. / 5. Basé sur avis des utilisateurs
Vue de la page 153
142 How Devices Communicate Using Application Messages
sends any repeated requests to the application and the application must
regenerate the response. This provides the opportunity for the application to
update the response to a repeated request. If the application wants to treat these
repeated request messages as non-idempotent, it can do so by buffering responses
by receive transaction index and re-issuing those responses when duplicate
requests arrive. An example is shown below.
Example:
#define OK 1
#define MAXRESP 10
struct RespBuffer {
int code;
unsigned int len;
int data[MAXRESP];
} resp_buffer[16];
when (msg_arrives) {
struct RespBuffer *buf_p;
if (msg_in.service == REQUEST) {
buf_p = &resp_buffer[msg_in.rcvtx];
if (!msg_in.duplicate) {
int i;
// Process initial request
// . . .
// Now save response
buf_p->code = OK;
buf_p->len = MAXRESP;
for (i=0; i<MAXRESP; i++) {
buf_p->data[i] = get_resp_data();
}
}
// Generate the response.
resp_out.code = buf_p->code;
memcpy(resp_out.data, buf_p->data, buf_p->len);
resp_send();
}
}
The above example also shows that the rcvtx field of the msg_in object specifies
the receive transaction index to which the request belongs.
Application Buffers
You can set the number of incoming and outgoing buffers available for use by a
Neuron C application during compilation. The defaults for all models of the
Neuron Chip and the Smart Transceivers, except the Neuron 3120 Chip and the
Neuron 3120E1 Chip, are:
Two priority application output buffers
Two nonpriority application output buffers
Vue de la page 153
1 2 ... 149 150 151 152 153 154 155 156 157 158 159 ... 267 268

Commentaires sur ces manuels

Pas de commentaire