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 all 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.
La fonction proposée dans le driver récupère TOUTE la configuration, contrairement à la version sous mbed qui configure UN PAR UN chaque paramètre.
La raison pour laquelle il n'y a pas de
set_status
est dû au choix à faire entre ces deux manières (configurer tous les paramètres en une fois ou un par un).Il faut aussi prendre en compte un commentaire fait plus haut qui implique un accès lourd aux valeurs (
enum
) de la configuration.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 pense que le problème vient surtout du design et du manque d'encapsulation.
ta
class Accelerometer
devrait avoir enprivate member
:config
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.
En fait,
_status
est le_config
de ton exemple et la structlsm6dsox_md_t
[Lien vers sa définition] qui correspond à la structConfig
dans ton exemple...La question porte plus sur l'utilisation d'une telle struct ou de tout découper. On est favorable à une struct plutôt que des membres séparés, mais soit :
lsm6dsox_md_t
proposé par le driver avec l'inconvénient mentionné un peu plus haut,Config
) pour d'une part palier au soucis du point précédent et d'autre part ajouter des paramètres supplémentaires tel que lePowerMode
.Bien que la seconde nécessite plus de travail et de code, il permettra d'avoir un code plus clair.
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 n'existe pas de
struct
/enum
pour associer la fréquence à unfloat
. Seulement est disponible un identifiant en hexadecimal qui est reconvertis ici.Il faudra donc prévoir une fonction ou un dictionnaire (
map
en C++) pour convertir dans les deux sens plus facilement, accessible de partout puisque ces paramètres seront souvent réutilisés.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 me pointer dans la doc où tout ça est décrit?
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.
Au niveau du code on retrouve leur définition ici : [Lien]
Dans la datasheet, tu peux le retrouver en Table 51 (p.56)
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.
ah je comprends ! en fait tu veux fair ressortir le data rate dans un format qu'on peut lire?
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'utilisation de la fonction
lsm6dsox_data_get()
a été abandonnée, il y a encore trop d'erreur dans cette fonction.Je ferrai remonté les erreurs en temps libre.
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.
curieux de voir les erreurs! :)
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.
Fixed : STMicroelectronics/STMems_Standard_C_drivers#62 :)
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.