diff options
Diffstat (limited to 'include/Device')
| -rw-r--r-- | include/Device/Device.h | 254 | 
1 files changed, 152 insertions, 102 deletions
| diff --git a/include/Device/Device.h b/include/Device/Device.h index 198cc67..5f2bf12 100644 --- a/include/Device/Device.h +++ b/include/Device/Device.h @@ -1,113 +1,163 @@  #ifndef DEVICE_H_  #define DEVICE_H_ +#include "Fpga.h"  #include "General.h"  #include "Utility.h"  #include "Version.h" +#include <math.h> /* ceil */ + +class Mtac15Fpga;  class Device { -	private: -        bool verbose ; -        bool isRoot; -        rapidjson::Document capabilities; -        rapidjson::Document ethSwitch; -        rapidjson::Document deviceInfo; -        static const std::vector<std::string> apIdentifiers; -        rapidjson::Document accessoryCards; -        rapidjson::Value accessoryCard; -        rapidjson::Document::AllocatorType& alloc = deviceInfo.GetAllocator(); -        rapidjson::Document::AllocatorType& accessoryCardsAlloc = accessoryCards.GetAllocator(); -        static std::map<std::string, bool> capabilityList; -        static std::map<std::string, std::string> ethSwitchList; -        static std::map<std::string, std::string> deviceInfoList; - -        static const std::regex apFilters; -        static const std::regex lora15Filters; -        static const std::regex loraG16Filters; -        static const std::regex loraG64Filters; -        static const std::regex gpiobFilters; -        static const std::regex mfserFilters; -        static const std::regex serialModeFilter; -        static const std::regex storeFilters; -        static const std::regex showFilters; - -        class AccessoryCard { -            protected: -                Device& device; -                const std::string productId; -                const std::string port; -            public: -                AccessoryCard(Device& d, const std::string ProductId, const std::string Port); -        }; - -        class LoraCard : public AccessoryCard { -            protected: -                std::string spiPath; -                uint8_t fpgaVersion = 255; -            public: -                LoraCard(Device& d, const std::string ProductId, const std::string Port); -                void setCapabilities(); -        }; - -        class Lora15Card : public LoraCard { -            private: -                void *spi_target_ptr = NULL; -            public: -                Lora15Card(Device& d, const std::string ProductId, const std::string Port); -                int spiOpen(const char *spidev); -                int spiRead(uint8_t address, uint8_t *data); -                int spiClose(); -        }; - -        class Lora21Card : public LoraCard { -            private: -                std::string cmdFpgaVersion; -            public: -                Lora21Card(Device& d, const std::string ProductId, const std::string Port); -        }; - -        class Lora21ExtCard : public Lora21Card { -            private: -                std::string cmdFpgaVersion2; -            public: -                Lora21ExtCard(Device& d, const std::string ProductId, const std::string Port); -        }; - -        class Gpiob : public AccessoryCard { -            public: -                Gpiob(Device& d, const std::string ProductId, const std::string Port); -        }; - -        class Mfser : public AccessoryCard { -            public: -                Mfser(Device& d, const std::string ProductId, const std::string Port); -        }; - -	public: -		Device(); -        void getSystemTreeJson(const char * dir_name); -        void init(); -        bool isAccessoryCard(const char * d_name, const char * dir_name); -        bool isValidDirectory(const struct dirent * entry, std::string fullPath, const char * d_name); -        void load(); -        void logInfo(std::string info); -        void logError(std::string info); -        void json(); -        void mapFileToCapability(); -        void mapFirmware(); -        void mapMacAddress2(); -        void printDir(const std::string dir_name, std::vector<std::string> &results); -        void printJson(); -        void printVersion (std::string name); -        void printUsage(std::string program); -        void show(std::string program); -        void showTrigger(std::string name); -        void sortAccessoryCards(); -        void store(std::string name, std::string value); -        void storeTrigger(std::string name, std::string value); -        void Verbose(bool val); -        bool Verbose(); -        void writeJson(); +  private: +    bool isRoot; +    rapidjson::Document capabilities; +    rapidjson::Document ethSwitch; +    rapidjson::Document deviceInfo; +    static const std::vector<std::string> apIdentifiers; +    rapidjson::Document accessoryCards; +    rapidjson::Value accessoryCard; +    rapidjson::Document::AllocatorType &alloc = deviceInfo.GetAllocator(); +    rapidjson::Document::AllocatorType &acAlloc = accessoryCards.GetAllocator(); +    static std::map<std::string, bool> capabilityList; +    static std::map<std::string, std::string> ethSwitchList; +    static std::map<std::string, std::string> deviceInfoList; + +    static const std::regex apFilters; +    static const std::regex serialModeFilter; +    static const std::regex storeFilters; +    static const std::regex showFilters; +    static const std::regex mtcdt3Filters; +    static const std::regex mtrFilters; + +    const unsigned int accessoryCardsListSize = 7; + +    class AccessoryCard { +      protected: +        Device &device; +        std::regex name; + +      public: +        AccessoryCard(Device &d, const std::regex Name); +        virtual void AddToDeviceInfo(const std::string Port, +                                     const std::string ProductID); +        const std::regex GetName(); +    }; + +    class LoraCard : public AccessoryCard { +      protected: +        std::string spiPath; +        uint8_t fpgaVersion; + +      public: +        LoraCard(Device &d, const std::regex Name); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    class Lora03Card : public LoraCard { +      private: +        std::string spiPath1261; +        uint8_t tmp102; + +      public: +        Lora03Card(Device &d); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    class Lora10Card : public LoraCard { +      public: +        Lora10Card(Device &d); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    class Lora15Card : public LoraCard { +      private: +        Lora15Card(); +        void *spi_target_ptr = NULL; +        const char pin_high = '1'; +        const char pin_low = '0'; + +      public: +        Lora15Card(Device &d); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    class Lora21Card : public LoraCard { +      private: +        std::string cmdFpgaVersion; + +      public: +        Lora21Card(Device &d); +        Lora21Card(Device &d, const std::regex Name); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    class Lora21ExtCard : public Lora21Card { +      private: +        std::string cmdFpgaVersion2; + +      public: +        Lora21ExtCard(Device &d); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    class Lora2G4Card : public LoraCard { +      public: +        Lora2G4Card(Device &d); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    class Gpiob : public AccessoryCard { +      public: +        Gpiob(Device &d); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    class Mfser : public AccessoryCard { +      public: +        Mfser(Device &d); +        void AddToDeviceInfo(const std::string Port, +                             const std::string ProductID); +    }; + +    std::vector<std::unique_ptr<AccessoryCard>> accessoryCardsList; + +  public: +    Device(); +    void getSystemTreeJson(const char *dir_name); +    void init(); +    bool isAccessoryCard(const char *d_name, const char *dir_name); +    bool isValidDirectory(const struct dirent *entry, std::string fullPath, +                          const char *d_name); +    void load(); +    void logInfo(std::string info); +    void logError(std::string info); +    void json(); +    void mapFileToCapability(); +    void mapFirmware(); +    void mapMacAddress2(); +    void printDir(const std::string dir_name, +                  std::vector<std::string> &results); +    void printJson(); +    void printVersion(std::string name); +    void printUsage(std::string program); +    void show(std::string program); +    void showTrigger(std::string name); +    void sortAccessoryCards(); +    void store(std::string name, std::string value); +    void storeTrigger(std::string name, std::string value); +    void Verbose(bool val); +    bool Verbose(); +    void writeJson();  };  #endif /* DEVICE_H_ */ | 
