Quellcode durchsuchen

add missing files

Christopher Mullins vor 6 Jahren
Ursprung
Commit
69cb3de8ac
2 geänderte Dateien mit 62 neuen und 0 gelöschten Zeilen
  1. 33 0
      lib/Types/RF24PowerLevel.cpp
  2. 29 0
      lib/Types/RF24PowerLevel.h

+ 33 - 0
lib/Types/RF24PowerLevel.cpp

@@ -0,0 +1,33 @@
+#include <RF24PowerLevel.h>
+#include <size.h>
+
+String RF24PowerLevelHelpers::nameFromValue(const RF24PowerLevel& value) {
+  const size_t ix = static_cast<size_t>(value);
+
+  if (ix >= size(RF24_POWER_LEVEL_NAMES)) {
+    Serial.println(F("ERROR: unknown RF24 power level label - this is a bug!"));
+    return nameFromValue(defaultValue());
+  }
+
+  return RF24_POWER_LEVEL_NAMES[ix];
+}
+
+RF24PowerLevel RF24PowerLevelHelpers::valueFromName(const String& name) {
+  for (size_t i = 0; i < size(RF24_POWER_LEVEL_NAMES); ++i) {
+    if (name == RF24_POWER_LEVEL_NAMES[i]) {
+      return static_cast<RF24PowerLevel>(i);
+    }
+  }
+
+  Serial.printf_P(PSTR("WARN: tried to fetch unknown RF24 power level: %s, using default.\n"), name.c_str());
+
+  return defaultValue();
+}
+
+uint8_t RF24PowerLevelHelpers::rf24ValueFromValue(const RF24PowerLevel& rF24PowerLevel) {
+  return static_cast<uint8_t>(rF24PowerLevel);
+}
+
+RF24PowerLevel RF24PowerLevelHelpers::defaultValue() {
+  return RF24PowerLevel::RF24_MAX;
+}

+ 29 - 0
lib/Types/RF24PowerLevel.h

@@ -0,0 +1,29 @@
+#include <Arduino.h>
+#include <RF24.h>
+
+#ifndef _RF24_POWER_LEVEL_H
+#define _RF24_POWER_LEVEL_H
+
+static const char* RF24_POWER_LEVEL_NAMES[] = {
+  "MIN",
+  "LOW",
+  "HIGH",
+  "MAX"
+};
+
+enum class RF24PowerLevel {
+  RF24_MIN  = RF24_PA_MIN,  // -18 dBm
+  RF24_LOW  = RF24_PA_LOW,  // -12 dBm
+  RF24_HIGH = RF24_PA_HIGH, //  -6 dBm
+  RF24_MAX  = RF24_PA_MAX   //   0 dBm
+};
+
+class RF24PowerLevelHelpers {
+public:
+  static String nameFromValue(const RF24PowerLevel& value);
+  static RF24PowerLevel valueFromName(const String& name);
+  static RF24PowerLevel defaultValue();
+  static uint8_t rf24ValueFromValue(const RF24PowerLevel& vlaue);
+};
+
+#endif