Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: pixy2.cpp
- Revision:
- 5:28e47187bb5c
- Parent:
- 3:6ba43af28440
- Child:
- 6:e9e3aa6f1a55
diff -r eed638064b42 -r 28e47187bb5c pixy2.cpp
--- a/pixy2.cpp Mon Mar 11 15:21:33 2019 +0000
+++ b/pixy2.cpp Mon Mar 11 17:18:25 2019 +0000
@@ -76,7 +76,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndGetResolution (void){
@@ -91,7 +91,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndSetCameraBrightness (Byte brightness){
@@ -106,7 +106,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndSetServo (Word s0, Word s1){
@@ -127,7 +127,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndSetLED (Byte red, Byte green, Byte blue){
@@ -144,7 +144,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndSetLamp (Byte upper, Byte lower){
@@ -160,7 +160,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndGetFPS (void){
@@ -174,7 +174,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndGetBlocks (Byte sigmap, Byte maxBloc){
@@ -190,7 +190,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndGetMainFeature (Byte type, Byte feature){
@@ -206,7 +206,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndSetMode (Byte mode){
@@ -221,7 +221,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndSetNexTurn (Word angle){
@@ -240,7 +240,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndSetDefaultTurn (Word angle){
@@ -259,7 +259,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndSetVector (Byte vectorIndex){
@@ -274,7 +274,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndReverseVector (void){
@@ -288,7 +288,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
int PIXY2::pixy2_sndGetRGB (Word x, Word y, Byte saturate){
@@ -305,7 +305,7 @@
_Pixy2->putc(msg.data[i]);
i++;
} while (i<(PIXY2_NCSHEADERSIZE+dataSize));
- return 0;
+ return PIXY2_OK;
}
/* La fonction est bloquante à l'envoi (pas vraiment le choix), mais elle est non bloquante en réception. On essayera de faire une fonction non bloquante en envoi avec write, mais c'est pas la priorité.
@@ -314,14 +314,14 @@
int PIXY2::pixy2_getVersion (T_Pixy2Version *version){
T_pixy2RcvHeader *msg = (T_pixy2RcvHeader*) &Pixy2_buffer[rPointer];
- int cr = 0;
+ int cr = PIXY2_OK;
switch (etat) {
case idle : // Si la caméra est inactive
PIXY2::pixy2_sndGetVersion(); // On envoie la trame de demande de la version
etat = messageSent; // On passe à l'attente du message de réponse
rPointer = wPointer; // On enregistre la position du pointeur de FIFO
- cr = -2; //Busy // On signale à l'utilisateur que la caméra est maintenant occupée
+ cr = PIXY2_BUSY; // On signale à l'utilisateur que la caméra est maintenant occupée
break;
case dataReceived : // Quand on a reçu l'intégralité du message
@@ -331,19 +331,19 @@
version = (T_Pixy2Version*) &Pixy2_buffer[rPointer + PIXY2_CSHEADERSIZE];
// Si le checksum et le type sont bon, on mappe le pointeur de résultat sur la FIFO (ligne précédente)
etat = idle; // Et on annoce que la pixy est libre
- } else cr = -7; // Type Error // Si le type ne correspond pas on signale une erreur
- } else cr = -3; // Checksum Error // Si le checksum est faux on retourne une erreur aussi !
+ } else cr = PIXY2_TYPE_ERROR; // Si le type ne correspond pas on signale une erreur
+ } else cr = PIXY2_BAD_CHECKSUM; // Si le checksum est faux on retourne une erreur aussi !
} else { // S'il n'y a pas de checksum (pas normal mais on ne sait jamais)
if (msg->pixType == PIXY2_REP_VERS) { // On vérifie que la trame est du type convenable
version = (T_Pixy2Version*) &Pixy2_buffer[rPointer + PIXY2_NCSHEADERSIZE];
// Si le checksum et le type sont bon, on mappe le pointeur de résultat sur la FIFO (ligne précédente)
etat = idle; // Et on annoce que la pixy est libre
- } else cr = -7; // Type Error // Si le type ne correspond pas on signale une erreur
+ } else cr = PIXY2_TYPE_ERROR; // Si le type ne correspond pas on signale une erreur
}
break;
default : // Dans tous les autres cas
- cr = -2; // Busy // On signale que la caméra est occupée.
+ cr = PIXY2_BUSY; // On signale que la caméra est occupée.
break;
}
return cr;
@@ -352,14 +352,14 @@
int PIXY2::pixy2_getResolution (T_Pixy2Resolution *resolution){
T_pixy2RcvHeader *msg = (T_pixy2RcvHeader*) &Pixy2_buffer[rPointer];
- int cr = 0;
+ int cr = PIXY2_OK;
switch (etat) {
case idle : // Si la caméra est inactive
PIXY2::pixy2_sndGetResolution(); // On envoie la trame de demande de la résolution
etat = messageSent; // On passe à l'attente du message de réponse
rPointer = wPointer; // On enregistre la position du pointeur de FIFO
- cr = -2; //Busy // On signale à l'utilisateur que la caméra est maintenant occupée
+ cr = PIXY2_BUSY; // On signale à l'utilisateur que la caméra est maintenant occupée
break;
case dataReceived : // Quand on a reçu l'intégralité du message
@@ -369,19 +369,19 @@
resolution = (T_Pixy2Resolution*) &Pixy2_buffer[rPointer + PIXY2_CSHEADERSIZE];
// Si le checksum et le type sont bon, on mappe le pointeur de résultat sur la FIFO (ligne précédente)
etat = idle; // Et on annoce que la pixy est libre
- } else cr = -7; // Type Error // Si le type ne correspond pas on signale une erreur
- } else cr = -3; // Checksum Error // Si le checksum est faux on retourne une erreur aussi !
+ } else cr = PIXY2_TYPE_ERROR; // Si le type ne correspond pas on signale une erreur
+ } else cr = PIXY2_BAD_CHECKSUM; // Si le checksum est faux on retourne une erreur aussi !
} else { // S'il n'y a pas de checksum (pas normal mais on ne sait jamais)
if (msg->pixType == PIXY2_REP_RESOL) { // On vérifie que la trame est du type convenable
resolution = (T_Pixy2Resolution*) &Pixy2_buffer[rPointer + PIXY2_NCSHEADERSIZE];
// Si le checksum et le type sont bon, on mappe le pointeur de résultat sur la FIFO (ligne précédente)
etat = idle; // Et on annoce que la pixy est libre
- } else cr = -7; // Type Error // Si le type ne correspond pas on signale une erreur
+ } else cr = PIXY2_TYPE_ERROR; // Si le type ne correspond pas on signale une erreur
}
break;
default : // Dans tous les autres cas
- cr = -2; // Busy // On signale que la caméra est occupée.
+ cr = PIXY2_BUSY; // On signale à l'utilisateur que la caméra est maintenant occupée
break;
}
return cr;
@@ -410,5 +410,5 @@
for (i=0; i<*(tab+3);i++) sum = sum + *(tab + PIXY2_CSHEADERSIZE + i);
tmp = (T_Word*) (tab+4);
if (tmp->mot == sum) return 0;
- else return -1;
+ else return PIXY2_BAD_CHECKSUM;
}