#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#define NUM_DRV_REGS (18)
#define PWM_MODE_7_INDEPENDENT_FETS (0x70)
#define PWM_MODE_MASK (0x70)
#define DRV8340_WRITE (0x0000)
static inline uint32_t DRV8340_ADDR(uint32_t n)
{
return ((n) << 8);
}
int main(void) {
// your code goes here
bool isPoly = true;
int reg = 4;
int val = 0x000a;
if (reg >= 0 && reg < NUM_DRV_REGS)
{
uint8_t u8_val =((uint32_t)val) & 0xff; /* Only 8 bits of data available */
printf("\n%u", (u8_val
& PWM_MODE_MASK
)); printf("Setting %s DRV[%d] = 0x%04x\n", isPoly ? "Poly" : "Elevation",
reg,
u8_val);
if (4 == reg &&
(u8_val & PWM_MODE_MASK) != PWM_MODE_7_INDEPENDENT_FETS &&
(u8_val & PWM_MODE_MASK) != 0)
{
printf("Error: PWM_MODE must be 0 or 7, write not executed\n"); }
else if (reg >= 6 && reg <= 8 && (u8_val >> 4) != (u8_val & 0xf))
{
printf("Error: Setting IDRIVEP_* must set same value for low and high!\n"); }
else if (isPoly)
{
if (4 == reg)
{
// pr->polyDriverModeZero = ((u8_val & PWM_MODE_MASK)==0);
}
// uint16_t polyTransmitData = DRV8340_WRITE | DRV8340_ADDR(reg) | (u8_val);
// (void) System_SPI_AzimuthReadWrite(&polyTransmitData, sizeof(polyTransmitData),NULL,0);
}
else
{
if (4 == reg)
{
// pr->elevationDriverModeZero = ((u8_val & PWM_MODE_MASK)==0);
}
// uint16_t elevationTransmitData = DRV8340_WRITE | DRV8340_ADDR(reg) | (u8_val);
// (void) System_SPI_ElevationReadWrite(&elevationTransmitData, sizeof(elevationTransmitData),NULL,0);
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KCiNkZWZpbmUgTlVNX0RSVl9SRUdTICgxOCkKI2RlZmluZSBQV01fTU9ERV83X0lOREVQRU5ERU5UX0ZFVFMgKDB4NzApCiNkZWZpbmUgUFdNX01PREVfTUFTSyAoMHg3MCkKI2RlZmluZSBEUlY4MzQwX1dSSVRFICgweDAwMDApCgpzdGF0aWMgaW5saW5lIHVpbnQzMl90IERSVjgzNDBfQUREUih1aW50MzJfdCBuKQp7CiAgICByZXR1cm4gKChuKSA8PCA4KTsKfQoKaW50IG1haW4odm9pZCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJYm9vbCBpc1BvbHkgPSB0cnVlOwoJaW50IHJlZyA9IDQ7CglpbnQgdmFsID0gMHgwMDBhOwoJaWYgKHJlZyA+PSAwICYmIHJlZyA8IE5VTV9EUlZfUkVHUykKCXsKCSAgICB1aW50OF90IHU4X3ZhbCA9KCh1aW50MzJfdCl2YWwpICYgMHhmZjsgLyogT25seSA4IGJpdHMgb2YgZGF0YSBhdmFpbGFibGUgKi8KCSAgICBwcmludGYoIlxuJXUiLCAodThfdmFsICYgUFdNX01PREVfTUFTSykpOwoJICAgIHByaW50ZigiU2V0dGluZyAlcyBEUlZbJWRdID0gMHglMDR4XG4iLAoJICAgICAgICBpc1BvbHkgPyAiUG9seSIgOiAiRWxldmF0aW9uIiwKCSAgICAgICAgcmVnLAoJICAgICAgICB1OF92YWwpOwoJICAgIGlmICg0ID09IHJlZyAmJgoJICAgICAgICAodThfdmFsICYgUFdNX01PREVfTUFTSykgIT0gUFdNX01PREVfN19JTkRFUEVOREVOVF9GRVRTICYmCgkgICAgICAgICh1OF92YWwgJiBQV01fTU9ERV9NQVNLKSAhPSAwKQoJICAgIHsKCSAgICAgICAgcHJpbnRmKCJFcnJvcjogUFdNX01PREUgbXVzdCBiZSAwIG9yIDcsIHdyaXRlIG5vdCBleGVjdXRlZFxuIik7CgkgICAgfQoJICAgIGVsc2UgaWYgKHJlZyA+PSA2ICYmIHJlZyA8PSA4ICYmICh1OF92YWwgPj4gNCkgIT0gKHU4X3ZhbCAmIDB4ZikpCgkgICAgewoJICAgICAgICBwcmludGYoIkVycm9yOiBTZXR0aW5nIElEUklWRVBfKiBtdXN0IHNldCBzYW1lIHZhbHVlIGZvciBsb3cgYW5kIGhpZ2ghXG4iKTsKCSAgICB9CgkgICAgZWxzZSBpZiAoaXNQb2x5KQoJICAgIHsKCSAgICAgICAgaWYgKDQgPT0gcmVnKQoJICAgICAgICB7CgkgICAgICAgICAgICAvLyBwci0+cG9seURyaXZlck1vZGVaZXJvID0gKCh1OF92YWwgJiBQV01fTU9ERV9NQVNLKT09MCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gdWludDE2X3QgcG9seVRyYW5zbWl0RGF0YSA9ICBEUlY4MzQwX1dSSVRFIHwgRFJWODM0MF9BRERSKHJlZykgfCAodThfdmFsKTsKCSAgICAvLyAodm9pZCkgU3lzdGVtX1NQSV9BemltdXRoUmVhZFdyaXRlKCZwb2x5VHJhbnNtaXREYXRhLCBzaXplb2YocG9seVRyYW5zbWl0RGF0YSksTlVMTCwwKTsKCSAgICB9CgkgICAgZWxzZQoJICAgIHsKCSAgICAgICAgaWYgKDQgPT0gcmVnKQoJICAgICAgICB7CgkgICAgICAgICAgICAvLyBwci0+ZWxldmF0aW9uRHJpdmVyTW9kZVplcm8gPSAoKHU4X3ZhbCAmIFBXTV9NT0RFX01BU0spPT0wKTsKCSAgICAgICAgfQoJCgkgICAgICAgIC8vIHVpbnQxNl90IGVsZXZhdGlvblRyYW5zbWl0RGF0YSA9IERSVjgzNDBfV1JJVEUgfCBEUlY4MzQwX0FERFIocmVnKSB8ICh1OF92YWwpOwoJICAgIC8vICh2b2lkKSBTeXN0ZW1fU1BJX0VsZXZhdGlvblJlYWRXcml0ZSgmZWxldmF0aW9uVHJhbnNtaXREYXRhLCBzaXplb2YoZWxldmF0aW9uVHJhbnNtaXREYXRhKSxOVUxMLDApOwoJCgkgICAgfQoJfQoJCglyZXR1cm4gMDsKfQo=