Changes between Version 8 and Version 9 of IOC_T04


Ignore:
Timestamp:
Mar 11, 2022, 10:03:21 AM (2 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IOC_T04

    v8 v9  
    33<h1><font size=+2> Programmation ESP32 / Arduino
    44}}}
     5
     6Le [htdocs:files répertoire] contient package eps32.tgz et le json du package.
    57
    68
     
    6466}}}
    6567
    66 Le [htdocs:files] contient package eps32.tgz et le json du package.
    6768
    6869= Vérification de l'environnement
     
    102103La structure contexte ressemble à :
    103104{{{#!c
    104 typedef struct Tache_s {
     105struct Tache_s {
    105106  unsigned int etat; 
    106107  int config;       
    107 } Tache_t;
    108 Tache_t T1, T2;  // 2 contextes pour 2 instances de tâches ayant le même comportement
     108};
     109struct Tache_s T1, T2;  // 2 contextes pour 2 instances de tâches ayant le même comportement
    109110}}}
    110111
     
    112113C'est la fonction `setup_Tache()`qui initialise le contexte avec des paramètres.
    113114{{{#!c
    114 void setup_Tache(Tache_t *ctx, params...) {
     115void setup_Tache(struct Tache_s *ctx, params...) {
    115116   // Initialisation du contexte}
    116117   ctx->etat = etat_initial;  //  reçu dans les paramètres
     
    181182//--------- définition de la tache Led
    182183
    183 typedef struct Led_s {
     184struct Led_s {
    184185  int timer;                                              // numéro du timer pour cette tâche utilisé par WaitFor
    185186  unsigned long period;                                   // periode de clignotement
    186187  int pin;                                                // numéro de la broche sur laquelle est la LED
    187188  int etat;                                               // etat interne de la led
    188 } Led_t;
    189 
    190 void setup_Led( Led_t * ctx, int timer, unsigned long period, byte pin) {
     189};
     190
     191void setup_Led( struct Led_s * ctx, int timer, unsigned long period, byte pin) {
    191192  ctx->timer = timer;
    192193  ctx->period = period;
     
    197198}
    198199
    199 void loop_Led(Led_t * ctx) {
     200void loop_Led( struct Led_s * ctx) {
    200201  if (!waitFor(ctx->timer, ctx->period)) return;          // sort s'il y a moins d'une période écoulée
    201202  digitalWrite(ctx->pin,ctx->etat);                       // ecriture
     
    205206//--------- definition de la tache Mess
    206207
    207 typedef struct Mess_st {
     208struct Mess_st {
    208209  int timer;                                              // numéro de timer utilisé par WaitFor
    209210  unsigned long period;                                             // periode d'affichage
    210211  char mess[20];
    211 } Mess_t ;
    212 
    213 void setup_Mess(Mess_t * ctx, int timer, unsigned long period, const char * mess) {
     212} ;
     213
     214void setup_Mess( struct Mess_s * ctx, int timer, unsigned long period, const char * mess) {
    214215  ctx->timer = timer;
    215216  ctx->period = period;
     
    218219}
    219220
    220 void loop_Mess(Mess_t *ctx) {
     221void loop_Mess(struct Mess_s *ctx) {
    221222  if (!(waitFor(ctx->timer,ctx->period))) return;         // sort s'il y a moins d'une période écoulée
    222223  Serial.println(ctx->mess);                              // affichage du message
     
    280281enum {EMPTY, FULL};
    281282
    282 typedef struct mailbox {
     283struct mailbox_s {
    283284  int state;
    284285  int val;
    285 } mailbox_t;
    286 
    287 mailbox_t mb0 = {.state = EMPTY};
     286};
     287
     288struct mailbox_s mb0 = {.state = EMPTY};
    288289
    289290void loop_T1(... mailbox_t * mb ...) {