| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-12-23 15:44:19 +0100 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-12-23 15:44:19 +0100 | 
| commit | 390576c3839ee7abb845e27b7267de45495e6b2f (patch) | |
| tree | c481c37c868ccc65a3476f60b17369b21a90b79b /src/device/axis | |
| parent | 4355548f79375a62bb5e3bb5695190d48e4c0bc3 (diff) | |
Starting to turn relabsd into a proper daemon...
Diffstat (limited to 'src/device/axis')
| -rw-r--r-- | src/device/axis/axis_name.c | 302 | 
1 files changed, 302 insertions, 0 deletions
| diff --git a/src/device/axis/axis_name.c b/src/device/axis/axis_name.c new file mode 100644 index 0000000..c18a28f --- /dev/null +++ b/src/device/axis/axis_name.c @@ -0,0 +1,302 @@ +/**** LIBEVDEV ****************************************************************/ +#include <libevdev/libevdev.h> + +/**** RELABSD *****************************************************************/ +#include <relabsd/debug.h> + +#include <relabsd/util/string.h> + +#include <relabsd/device/axis.h> + +/******************************************************************************/ +/**** LOCAL FUNCTIONS *********************************************************/ +/******************************************************************************/ + +/******************************************************************************/ +/**** EXPORTED FUNCTIONS ******************************************************/ +/******************************************************************************/ +enum relabsd_axis_name relabsd_axis_parse_name +( +   const char name [const restrict static 1] +) +{ +   if (RELABSD_STRING_EQUALS("X", name)) +   { +      return RELABSD_X; +   } +   else if (RELABSD_STRING_EQUALS("Y", name)) +   { +      return RELABSD_Y; +   } +   else if (RELABSD_STRING_EQUALS("Z", name)) +   { +      return RELABSD_Z; +   } +   else if (RELABSD_STRING_EQUALS("RX", name)) +   { +      return RELABSD_RX; +   } +   else if (RELABSD_STRING_EQUALS("RY", name)) +   { +      return RELABSD_RY; +   } +   else if (RELABSD_STRING_EQUALS("RZ", name)) +   { +      return RELABSD_RZ; +   } +   else if (RELABSD_STRING_EQUALS("WL", name)) +   { +      return RELABSD_WHEEL; +   } +   else if (RELABSD_STRING_EQUALS("MC", name)) +   { +      return RELABSD_MISC; +   } + +   return RELABSD_UNKNOWN; +} + +const char * relabsd_axis_name_to_string (const enum relabsd_axis_name e) +{ +   switch (e) +   { +      case RELABSD_X: +         return "X"; + +      case RELABSD_Y: +         return "Y"; + +      case RELABSD_Z: +         return "Z"; + +      case RELABSD_RX: +         return "RX"; + +      case RELABSD_RY: +         return "RY"; + +      case RELABSD_RZ: +         return "RZ"; + +      case RELABSD_WHEEL: +         return "WL"; + +      case RELABSD_MISC: +         return "MC"; + +      case RELABSD_UNKNOWN: +         return "??"; + +      default: +         break; +   } + +   RELABSD_S_PROG_ERROR("relabsd_axis_to_name is missing at least 1 case."); + +   return ".."; +} + +enum relabsd_axis_name relabsd_axis_name_and_evdev_abs_from_evdev_rel +( +   const unsigned int rel_code, +   unsigned int abs_code [const restrict static 1] +) +{ +   switch (rel_code) +   { +      case REL_X: +         *abs_code = ABS_X; +         return RELABSD_X; + +      case REL_Y: +         *abs_code = ABS_Y; +         return RELABSD_Y; + +      case REL_Z: +         *abs_code = ABS_Z; +         return RELABSD_Z; + +      case REL_RX: +         *abs_code = ABS_RX; +         return RELABSD_RX; + +      case REL_RY: +         *abs_code = ABS_RY; +         return RELABSD_RY; + +      case REL_RZ: +         *abs_code = ABS_RZ; +         return RELABSD_RZ; + +      case REL_WHEEL: +         *abs_code = ABS_WHEEL; +         return RELABSD_WHEEL; + +      case REL_MISC: +         *abs_code = ABS_MISC; +         return RELABSD_MISC; + +      default: +         return RELABSD_UNKNOWN; +   } +} + +unsigned int relabsd_axis_name_to_evdev_rel (const enum relabsd_axis_name e) +{ +   switch (e) +   { +      case RELABSD_X: +         return REL_X; + +      case RELABSD_Y: +         return REL_Y; + +      case RELABSD_Z: +         return REL_Z; + +      case RELABSD_RX: +         return REL_RX; + +      case RELABSD_RY: +         return REL_RY; + +      case RELABSD_RZ: +         return REL_RZ; + +      case RELABSD_WHEEL: +         return REL_WHEEL; + +      case RELABSD_MISC: +         return REL_MISC; + +      case RELABSD_UNKNOWN: +         RELABSD_S_PROG_ERROR +         ( +            "relabsd_axis_name_to_evdev_rel(RELABSD_UNKNOWN) is forbidden." +         ); +         return REL_MAX; + +      default: +         break; +   } + +   RELABSD_S_PROG_ERROR +   ( +      "relabsd_axis_name_to_evdev_rel is missing at least 1 case." +   ); + +   return REL_MAX; +} + +unsigned int relabsd_axis_name_to_evdev_abs (const enum relabsd_axis_name e) +{ +   switch (e) +   { +      case RELABSD_X: +         return ABS_X; + +      case RELABSD_Y: +         return ABS_Y; + +      case RELABSD_Z: +         return ABS_Z; + +      case RELABSD_RX: +         return ABS_RX; + +      case RELABSD_RY: +         return ABS_RY; + +      case RELABSD_RZ: +         return ABS_RZ; + +      case RELABSD_WHEEL: +         return ABS_WHEEL; + +      case RELABSD_MISC: +         return ABS_MISC; + +      case RELABSD_UNKNOWN: +         RELABSD_S_PROG_ERROR +         ( +            "relabsd_axis_to_abs(RELABSD_UNKNOWN) is forbidden." +         ); +         return ABS_MAX; + +      default: +         break; +   } + +   RELABSD_S_PROG_ERROR("relabsd_axis_to_abs is missing at least 1 case."); + +   return REL_MAX; +} + +/* + * Returns the relabsd_axis equivalent of a EV_REL/EV_ABS code. + */ +enum relabsd_axis_name relabsd_axis_name_from_evdev_rel (const unsigned int rel) +{ +   switch (rel) +   { +      case REL_X: +         return RELABSD_X; + +      case REL_Y: +         return RELABSD_Y; + +      case REL_Z: +         return RELABSD_Z; + +      case REL_RX: +         return RELABSD_RX; + +      case REL_RY: +         return RELABSD_RY; + +      case REL_RZ: +         return RELABSD_RZ; + +      case REL_WHEEL: +         return RELABSD_WHEEL; + +      case REL_MISC: +         return RELABSD_MISC; + +      default: +         return RELABSD_UNKNOWN; +   } +} + +enum relabsd_axis_name relabsd_axis_name_from_evdev_abs (const unsigned int abs) +{ +   switch (abs) +   { +      case ABS_X: +         return RELABSD_X; + +      case ABS_Y: +         return RELABSD_Y; + +      case ABS_Z: +         return RELABSD_Z; + +      case ABS_RX: +         return RELABSD_RX; + +      case ABS_RY: +         return RELABSD_RY; + +      case ABS_RZ: +         return RELABSD_RZ; + +      case ABS_WHEEL: +         return RELABSD_WHEEL; + +      case ABS_MISC: +         return RELABSD_MISC; + +      default: +         return RELABSD_UNKNOWN; +   } +} | 


