Update moza.c
moza_update values updated for LED test. MOZA_PAYLOAD_SIZE added per update from Spacefreak18
This commit is contained in:
parent
1d9b6cfe1a
commit
0201b29c49
|
|
@ -13,67 +13,64 @@
|
||||||
#define MOZA_SERIAL_TEMPLATE {0x7e, 0x06, 0x41, 0x13, 0xfd, 0xde, 0x0, 0x0, 0x0, 0x0, 0x0}
|
#define MOZA_SERIAL_TEMPLATE {0x7e, 0x06, 0x41, 0x13, 0xfd, 0xde, 0x0, 0x0, 0x0, 0x0, 0x0}
|
||||||
#define MOZA_NUM_AVAILABLE_LEDS 10
|
#define MOZA_NUM_AVAILABLE_LEDS 10
|
||||||
#define MOZA_BLINKING_BIT 7
|
#define MOZA_BLINKING_BIT 7
|
||||||
|
#define MOZA_PAYLOAD_SIZE 11
|
||||||
#define MOZA_MAGIC_VALUE 0x0d
|
#define MOZA_MAGIC_VALUE 0x0d
|
||||||
#define BIT(nr) (1UL << (nr))
|
#define BIT(nr) (1UL << (nr))
|
||||||
|
|
||||||
unsigned char moza_checksum(unsigned char *data)
|
unsigned char moza_checksum(unsigned char *data)
|
||||||
{
|
{
|
||||||
unsigned char ret = MOZA_MAGIC_VALUE;
|
unsigned char ret = MOZA_MAGIC_VALUE;
|
||||||
for (short i = 0; i < sizeof(data)/sizeof(data[0]); i++)
|
for (short i = 0; i < MOZA_PAYLOAD_SIZE; i++)
|
||||||
{
|
{
|
||||||
ret += data[i];
|
ret += data[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret % 0x100;
|
||||||
}
|
}
|
||||||
|
|
||||||
int moza_update(SerialDevice* serialdevice, unsigned short maxrpm, unsigned short rpm)
|
int moza_update(SerialDevice* serialdevice, unsigned short maxrpm, unsigned short rpm)
|
||||||
{
|
{
|
||||||
unsigned char bytes[] = MOZA_SERIAL_TEMPLATE;
|
unsigned char bytes[] = MOZA_SERIAL_TEMPLATE;
|
||||||
int size = sizeof(bytes)/sizeof(bytes[0]);
|
int size = MOZA_PAYLOAD_SIZE;
|
||||||
|
|
||||||
float perct = (float)rpm/(float)maxrpm;
|
float perct = (float)rpm/(float)maxrpm;
|
||||||
|
|
||||||
if (perct >= 0.8)
|
if (perct >= .1)
|
||||||
bytes[9] |= BIT(0);
|
bytes[9] |= BIT(0);
|
||||||
|
|
||||||
if (perct >= 0.83)
|
if (perct >= .2)
|
||||||
bytes[9] |= BIT(1);
|
bytes[9] |= BIT(1);
|
||||||
|
|
||||||
if (perct >= 0.86)
|
if (perct >= .3)
|
||||||
bytes[9] |= BIT(2);
|
bytes[9] |= BIT(2);
|
||||||
|
|
||||||
if (perct >= 0.89)
|
if (perct >= .4)
|
||||||
bytes[9] |= BIT(3);
|
bytes[9] |= BIT(3);
|
||||||
|
|
||||||
if (perct >= 0.91)
|
if (perct >= .5)
|
||||||
bytes[8] |= BIT(4);
|
bytes[9] |= BIT(4);
|
||||||
|
|
||||||
if (perct >= 0.92)
|
if (perct >= .6)
|
||||||
bytes[8] |= BIT(5);
|
bytes[9] |= BIT(4);
|
||||||
|
|
||||||
if (perct >= 0.93)
|
if (perct >= .7)
|
||||||
|
bytes[9] |= BIT(5);
|
||||||
|
|
||||||
|
if (perct >= .8)
|
||||||
bytes[8] |= BIT(6);
|
bytes[8] |= BIT(6);
|
||||||
|
|
||||||
if (perct >= 0.94)
|
if (perct >= .9)
|
||||||
bytes[8] |= BIT(7);
|
bytes[8] |= BIT(7);
|
||||||
|
|
||||||
if (perct >= 0.96)
|
|
||||||
bytes[8] |= BIT(0);
|
|
||||||
|
|
||||||
if (perct >= 0.96)
|
|
||||||
bytes[8] |= BIT(1);
|
|
||||||
|
|
||||||
// blinking
|
// blinking
|
||||||
if (perct >= 0.97)
|
if (perct >= .95)
|
||||||
bytes[9] |= BIT(MOZA_BLINKING_BIT);
|
bytes[8] |= BIT(MOZA_BLINKING_BIT);
|
||||||
|
|
||||||
bytes[10] = moza_checksum(bytes);
|
bytes[10] = moza_checksum(bytes);
|
||||||
|
|
||||||
int result = 1;
|
int result = 1;
|
||||||
if (serialdevice->port)
|
if (serialdevice->port)
|
||||||
{
|
{
|
||||||
slogd("copying %i bytes to moza device", size);
|
slogd("copying %i bytes to moza device", MOZA_PAYLOAD_SIZE);
|
||||||
slogt("writing bytes %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x from rpm %i maxrpm %i", bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], bytes[6], bytes[7], bytes[8], bytes[9], bytes[10], rpm, maxrpm);
|
slogt("writing bytes %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x from rpm %i maxrpm %i", bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], bytes[6], bytes[7], bytes[8], bytes[9], bytes[10], rpm, maxrpm);
|
||||||
result = monocoque_serial_write(serialdevice->id, bytes, size, MOZA_TIMEOUT);
|
result = monocoque_serial_write(serialdevice->id, bytes, size, MOZA_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue