mirror of
https://github.com/TheTesla/HengLongUDPclient.git
synced 2025-06-30 04:16:52 +02:00
bug memset size fixed; reading config file working
This commit is contained in:
parent
b29d631668
commit
8eabc532ed
8 changed files with 227 additions and 163 deletions
123
henglong.c
Normal file
123
henglong.c
Normal file
|
@ -0,0 +1,123 @@
|
|||
|
||||
#include "henglong.h"
|
||||
|
||||
int CRC(int data)
|
||||
{
|
||||
int c;
|
||||
c = 0;
|
||||
c ^= data & 0x03;
|
||||
c ^= (data >> 2) & 0x0F;
|
||||
c ^= (data >> 6) & 0x0F;
|
||||
c ^= (data >> 10) & 0x0F;
|
||||
c ^= (data >> 14) & 0x0F;
|
||||
c ^= (data >> 18) & 0x0F;
|
||||
return c;
|
||||
}
|
||||
|
||||
int data2frame(int data)
|
||||
{
|
||||
int frame;
|
||||
frame = 0;
|
||||
frame |= CRC(data) << 2;
|
||||
frame |= data << 6;
|
||||
frame |= 0xFE000000;
|
||||
return frame;
|
||||
}
|
||||
|
||||
|
||||
int values2data(int velocity, int direction, int ignation, int mg, int fire, int turretelev, int turret_left, int turret_right, int recoil)
|
||||
{
|
||||
int data = 0;
|
||||
data = (mg & 1) | (ignation & 1) << 1 | (direction & 0b11111) << 2 | (fire & 1) << 7 | (turretelev & 1) << 8 | (turret_left & 1) << 9 | (turret_right & 1) << 10 | (recoil & 1) << 11 | (velocity & 0b11111) << 12;
|
||||
return data;
|
||||
}
|
||||
|
||||
void inithenglong(henglong_t* henglong)
|
||||
{
|
||||
henglong->velocity = 0b10000;
|
||||
henglong->direction = 0b01111;
|
||||
henglong->ignation = 0;
|
||||
henglong->mg = 0;
|
||||
henglong->fire = 0;
|
||||
henglong->turretelev = 0;
|
||||
henglong->turret_left = 0;
|
||||
henglong->turret_right = 0;
|
||||
henglong->recoil = 0;
|
||||
}
|
||||
|
||||
|
||||
int event2data(henglong_t* henglong, struct input_event event)
|
||||
{
|
||||
if(108==event.code){
|
||||
if(event.value){
|
||||
henglong->velocity = 0b11111;
|
||||
}else{
|
||||
henglong->velocity = 0b10000;
|
||||
}
|
||||
}
|
||||
if(103==event.code){
|
||||
if(event.value){
|
||||
henglong->velocity = 0b00000;
|
||||
}else{
|
||||
henglong->velocity = 0b10000;
|
||||
}
|
||||
}
|
||||
if(105==event.code){
|
||||
if(event.value){
|
||||
henglong->direction = 0b00000;
|
||||
}else{
|
||||
henglong->direction = 0b01111;
|
||||
}
|
||||
}
|
||||
if(106==event.code){
|
||||
if(event.value){
|
||||
henglong->direction = 0b11111;
|
||||
}else{
|
||||
henglong->direction = 0b01111;
|
||||
}
|
||||
}
|
||||
if(23==event.code){
|
||||
if(event.value){
|
||||
henglong->ignation = 1;
|
||||
}else{
|
||||
henglong->ignation = 0;
|
||||
}
|
||||
}
|
||||
if(34==event.code){
|
||||
if(event.value){
|
||||
henglong->mg = 1;
|
||||
}else{
|
||||
henglong->mg = 0;
|
||||
}
|
||||
}
|
||||
if(33==event.code){
|
||||
if(event.value){
|
||||
henglong->fire = 1;
|
||||
}else{
|
||||
henglong->fire = 0;
|
||||
}
|
||||
}
|
||||
if(29==event.code){
|
||||
if(event.value){
|
||||
henglong->turret_left = 1;
|
||||
}else{
|
||||
henglong->turret_left = 0;
|
||||
}
|
||||
}
|
||||
if(20==event.code){
|
||||
if(event.value){
|
||||
henglong->turretelev = 1;
|
||||
}else{
|
||||
henglong->turretelev = 0;
|
||||
}
|
||||
}
|
||||
if(19==event.code){
|
||||
if(event.value){
|
||||
henglong->recoil = 1;
|
||||
}else{
|
||||
henglong->recoil = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return values2data(henglong->velocity, henglong->direction, henglong->ignation, henglong->mg, henglong->fire, henglong->turretelev, henglong->turret_left, henglong->turret_right, henglong->recoil);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue