Moteur Brushless de nacelle Gimbal

Bonjour à tous,

J'essaie de comprendre comment fonctionne un moteur BLDC des nacelles Gimbal.

J'ai pris récupéré le code Open Source du projet Brugi.

La fonction dont je ne comprends pas le fonctionnement est la suivante:

void MoveMotorPosSpeed(int MotorPos, uint16_t maxPWM)
{
uint16_t posStep;
uint16_t pwm_a;
uint16_t pwm_b;
uint16_t pwm_c;

// fetch pwm from sinus table
posStep = MotorPos & 0xff;
pwm_a = pwmSinMotor[(uint8_t)posStep];
pwm_b = pwmSinMotor[(uint8_t)(posStep + 85)];
pwm_c = pwmSinMotor[(uint8_t)(posStep + 170)];

// apply power factor
pwm_a = maxPWM * pwm_a;
pwm_a = pwm_a >> 8;
pwm_a += 128;

pwm_b = maxPWM * pwm_b;
pwm_b = pwm_b >> 8;
pwm_b += 128;

pwm_c = maxPWM * pwm_c;
pwm_c = pwm_c >> 8;
pwm_c += 128;

// set motor pwm variables
pwm_a_motor = (uint8_t)pwm_a;
pwm_b_motor = (uint8_t)pwm_b;
pwm_c_motor = (uint8_t)pwm_c;
}

La variable d'entrée MotorPos est issue de la fonction ComutePID().

Est-ce quelqu'un peut m'indiquer comment fonctionne ce genre de moteur (avec cette fonction).
Mon but à terme est de pouvoir logger sur une carte SD l'angle pris par le drone/avion/....

Pour les servos moteur, on les pilotes en leur donnant des angles, mais pour cette fonction, je ne sais pas interpréter les pwm_a,pwm_b, pwm_c afin de les transformer en angle (ou en vitesse angulaire).

Voila, si vous avez une explication ou des liens (en français de préférence), je suis preneur.
J'ai regardé quelques post sur ce forum et sur internet, mais ....

Merci