Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LSM6DSOX - Get Configuration #10
LSM6DSOX - Get Configuration #10
Changes from 3 commits
fc8edca
016c3cc
3cbe9ef
1ec5825
34c9ea8
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
il faudra bien vérifier qu'on compile après avec
NDEBUG
https://en.cppreference.com/w/cpp/error/assertvoir aussi si c'est conseillé en dehors des tests de mettre des assert dans le code. pas sûr que ce soit utile de crasher le robot si l'i2c ne marche plus. on voudrait plutôt continuer en faisant remonter le problème.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
La forme est illisible, la faute à un
enum
anonyme imbriquée dans plusieursstruct
anonymes. Le côté anonyme signifie qu'il n'y a pas de nom, ça n'empêche pas d'avoir un type.On peut retrouver ladite structure ici.
Si il y a un moyen d'accéder au
enum
sans avoir à passer les autresstruct
je suis preneur.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
si tu parles de
_status.ui.xl.odr
je ne suis pas d'accord, pour le coup c'est ultra standard comme forme (on peut reprocher les abréviations pas claires mais c'est très spécifique), avec les.
. En Swift on aura que ça.Pour le coup je trouve que leur structure est assez propre.
De toute manière, ce genre de chose ne sera écrit qu'une fois et bien documenté. Après on en parlera plus.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je parlais plus de la partie droite de l'affectation :
_status.ui.xl.LSM6DSOX_XL_UI_52Hz_LP
On peut voir une redondance des termes
ui
etxl
et la valeur de l'enum ne peut être affecté qu'à partir d'un objet, ici_status
.Ca implique que laissé tel quel, pour passer en paramètre il faut entrer
_status.ui.xl.LSM6DSOX_XL_UI_52Hz_LP
plutôt que simplementLSM6DSOX_XL_UI_52Hz_LP
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
le nom de la fonction est pas clair et ce qu'elle fait ne sont pas clair pour moi.
tu dis
get_int_status
mais en même temps tu récupères des données en passant un pointeur.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
une autre manière de découper pourrait être la suivante:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pourquoi définir un
success
plutôt que justereturn LSM6DSOX_Acc_OK
comme tu le fais déjà dans leif
.et surtout que tu dis que tu vas récupérer le status de l'interrupt (donc s'il y a des données dispos) mais qu'en fait tu get le status de l'accéléromètre au sens large.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tout à fait pour le
success
, ça a été corrigé dans le commit 1ec5825C'est effectivement pas la bonne forme pour utiliser les interrupts. Quand j'ai voulu intégrer tous les
status
je me suis retrouvé avec la fonctionall_sources_get
et qui menait à la fin à tous les interrupts du composant. Dans le cas de l'accéléromètre il n'y en a qu'un qui lui est proprement utile.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mentionné dans un appel, il serait intéressant de rentrer cette fonction à l'intérieur de la classe afin de simplifier son utilisation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
il faut préféré les
enum class
, voir ici: http://www.stroustrup.com/C++11FAQ.html#enumC'est Bjarn lui même qui le dit ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ca a été ajouté dans le commit 34c9ea8
Même si ça allège le nom, les comparaison (avec
!=
) ne passe plus, je suis obligé de cast à chaque comparaison avec des éléments externes.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tu peux donner un type à ton enum avec
enum class: uint8_t
par exemple.testes et dis moi si ça marche :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ca a déjà été fait dans le commit 34c9ea8, comme on peut le voir ici : [Lien]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pareil ici:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
et d'ailleurs pourquoi -1 et -2 plutôt que 1 et 2?
0 c'est que tout est OK mais une raison particulière à aller dans le négatif?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
L'idée d'affecter des
enum
pour les OK/ERROR vient du stm32duino. Et ils avaient basé leur ERROR à -1.Par contre je doute que ça ait plus de sens d'aller dans les négatifs, donc on peut aller dans les positifs sans soucis si ça a un intérêt d'optimisation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
l'intérêt de donner un numéro c'est qu'après on peut checker l'error avec
try-block
.Si on a des errors spécifiques à nous, on peut faire un enum. sinon c'est bien aussi d'utiliser les exceptions de
std::
https://en.cppreference.com/w/cpp/error/exception qui intègre overflow et runtime error par exemple.