File indexing completed on 2024-04-21 04:34:28

0001 /*
0002  * This file is part of KDevelop project
0003  * Copyright 2016 Patrick José Pereira <patrickelectric@gmail.com>
0004  *
0005  * This program is free software; you can redistribute it and/or modify
0006  * it under the terms of the GNU Library General Public License as
0007  * published by the Free Software Foundation; either version 2 of the
0008  * License, or (at your option) any later version.
0009  *
0010  * This program is distributed in the hope that it will be useful,
0011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0013  * GNU General Public License for more details.
0014  *
0015  * You should have received a copy of the GNU General Public
0016  * License along with this program; if not, write to the
0017  * Free Software Foundation, Inc.,
0018  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0019  */
0020 
0021 #pragma once
0022 
0023 #include <QString>
0024 #include <QStringList>
0025 #include <QHash>
0026 #include <QFile>
0027 #include <QMap>
0028 #include <QLoggingCategory>
0029 
0030 Q_DECLARE_LOGGING_CATEGORY(BoMsg)
0031 
0032 //class QFile;
0033 
0034 class BoardInfo
0035 {
0036 public:
0037     void printData();
0038 
0039     // Board
0040 
0041     QStringList m_name;
0042     QStringList m_vid;
0043     QStringList m_pid;
0044 
0045     // Upload
0046 
0047     QStringList m_upTool;
0048     QStringList m_upProtocol;
0049     QStringList m_upMaxSize;
0050     QStringList m_upMaxDataSize;
0051     QStringList m_upSpeed;
0052     QStringList m_upDisableFlush;
0053     QStringList m_upUse1k2bpsTouch;
0054     QStringList m_upWaitForUploadPort;
0055 
0056     // Boot loader
0057 
0058     QStringList m_blTool;
0059     QStringList m_blLowFuses;
0060     QStringList m_blHighFuses;
0061     QStringList m_blExtendedFuses;
0062     QStringList m_blFile;
0063     QStringList m_blNoblink;
0064     QStringList m_blUnlockBits;
0065     QStringList m_blLockBits;
0066 
0067     // Build
0068 
0069     QStringList m_bMcu;
0070     QStringList m_bFcpu;
0071     QStringList m_bVid;
0072     QStringList m_bPid;
0073     QStringList m_bUsbProduct;
0074     QStringList m_bBoard;
0075     QStringList m_bCore;
0076     QStringList m_bVariant;
0077     QStringList m_bExtraFlags;
0078 
0079     QStringList m_upMaxSizeKb;
0080     QStringList m_upMaxDataSizeKb;
0081     QStringList m_freqHz;
0082 
0083     // Not an Option
0084     QStringList m_NaO;
0085 
0086 };
0087 
0088 /**
0089  * @brief A class to help deal with boards.txt
0090  *
0091  */
0092 class Board
0093 {
0094 public:
0095     static  Board& instance();
0096 
0097     QMap<QString, BoardInfo> m_boards;
0098 
0099     QStringList m_boardList;
0100     QStringList m_boardNameList;
0101     void update();
0102     QString getIdFromName(QString _name);
0103 
0104 private:
0105     Board& operator = (Board& other) = delete;
0106     Board(const Board& other) = delete;
0107     Board();
0108     ~Board();
0109 
0110     void load();
0111     QString Freq2FreqHz(QString freq);
0112 
0113     bool m_arduinoFolderFail;
0114     bool m_listed;
0115     QFile* m_arduinoFolder;
0116 };