diff --git a/hal/lib/Athena/Digital.cpp b/hal/lib/Athena/Digital.cpp index 8581ed864e..2528d52d55 100644 --- a/hal/lib/Athena/Digital.cpp +++ b/hal/lib/Athena/Digital.cpp @@ -256,7 +256,7 @@ void* allocatePWM(int32_t *status) { * @param pwmGenerator The pwmGen to free that was allocated with AllocateDO_PWM() */ void freePWM(void* pwmGenerator, int32_t *status) { - uint32_t id = *((uint32_t*) pwmGenerator); + uint32_t id = (uint32_t) pwmGenerator; if (id == ~0ul) return; DO_PWMGenerators->Free(id); } @@ -283,7 +283,7 @@ void setPWMRate(double rate, int32_t *status) { * @param dutyCycle The percent duty cycle to output [0..1]. */ void setPWMDutyCycle(void* pwmGenerator, double dutyCycle, int32_t *status) { - uint32_t id = *((uint32_t*) pwmGenerator); + uint32_t id = (uint32_t) pwmGenerator; if (id == ~0ul) return; if (dutyCycle > 1.0) dutyCycle = 1.0; if (dutyCycle < 0.0) dutyCycle = 0.0; @@ -308,28 +308,9 @@ void setPWMDutyCycle(void* pwmGenerator, double dutyCycle, int32_t *status) { * @param channel The Digital Output channel to output on */ void setPWMOutputChannel(void* pwmGenerator, uint32_t pin, int32_t *status) { - uint32_t id = *((uint32_t*) pwmGenerator); - if (id == ~0ul) return; - switch(id) { - case 0: - digitalSystem->writePWMOutputSelect(0, pin, status); - break; - case 1: - digitalSystem->writePWMOutputSelect(1, pin, status); - break; - case 2: - digitalSystem->writePWMOutputSelect(2, pin, status); - break; - case 3: - digitalSystem->writePWMOutputSelect(3, pin, status); - break; - case 4: - digitalSystem->writePWMOutputSelect(4, pin, status); - break; - case 5: - digitalSystem->writePWMOutputSelect(5, pin, status); - break; - } + uint32_t id = (uint32_t) pwmGenerator; + if (id > 5) return; + digitalSystem->writePWMOutputSelect(id, pin, status); } /**