Récupérer la valeur de retour d'une fonction en C depuis Python
Bonjour à tous,
Dans le cadre d'un projet de développement d'un logiciel de benchmark, je dispose de deux programmes : l'un codé en C et l'autre codé en Python.
Le programme en C contient l'ensemble des fonctions permettant de réaliser les mesures, les tests et appeler des librairies de crypto que l'on souhaite évaluer (rapidité d'exécution, nombre de cycle de processeur). Le programme en C, une fois compilé, sera envoyé à la mémoire Flash d'un microcontrôleur avant d'être exécuté. Le point obscure et dont je ne vois pas comment procéder, c'est que pour chaque mesure effectuée, il va falloir récupérer des informations (configurations de la mesure ou du test). J'ai pensé utiliser une fonction qui se chargerait à chaque fois de remplir une structure et que cette même fonction retournerait l'adresse du pointeur sur cette structure.
Voici mon code en C ci-dessous:
Code:
1 2 3 4 5 6 7 8 9 10
| typedef struct
{
char typeAlgo[20];
char mode[20];
uint8_t keyLength;
uint8_t bufferSize;
uint8_t nbBuffer;
char nameAlgo[20];
char measurementTarget[20];
}BenchDataConfig; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| BenchDataConfig *Display(char* TYPE_ALGO, char* MODE, uint8_t KEY_LENGTH, uint8_t BUFFER_SIZE, uint8_t NB_BUFFER, char* ALGO, char* MEASUREMENT_TARGET)
{
/* Dynamic allocation and init the structure */
BenchDataConfig *config = (BenchDataConfig*) malloc(sizeof(BenchDataConfig));
/* Store each argument in the structure */
config->typeAlgo = TYPE_ALGO;
config->mode = MODE;
config->keyLength = KEY_LENGTH;
config->bufferSize = BUFFER_SIZE;
config->nbBuffer = NB_BUFFER;
config->nameAlgo = ALGO;
config->measurementTarget = MEASUREMENT_TARGET;
/* Return the adress of the structure pointer */
return config;
} |
Le programme en Python va se charger de compiler, charger le code C en mémoire flash du microcontrôleur puis d'exécuter le code chargé en flash.
Juste avant l'exécution du code, on lance une lecture du port série pour récupérer chaque mesure.
Ce que j'aimerai faire, c'est récupérer chaque configuration via l'adresse du pointeur sur la structure en C et ce depuis Python.
J'ai cherché sur Internet mais malheureusement je n'ai rien trouvé là-dessus.
Merci d'avance pour vos retours :)