Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

plugin: Add ADMT Plugin for ADMT4000 #1878

Open
wants to merge 102 commits into
base: dev
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
718a439
cmake: added post build to copy .DLLs when debugging or launching scopy
JJuanill May 29, 2024
a63abe9
tools/plugingenerator: modified CMake list template to output generat…
JJuanill May 29, 2024
c6f3b9c
doc: Included documentation for building Scopy locally on Windows env…
JJuanill May 29, 2024
3298760
admt: Initialized plugin files
JJuanill May 30, 2024
c420a2c
admt: Configured ADMT plugin
JJuanill May 30, 2024
8267a16
admt: Added test GUI textbox and button for rotation, count, and angle
JJuanill Jun 3, 2024
4f205fc
Merge remote-tracking branch 'origin/dev' into dev_windows_build
JJuanill Jun 5, 2024
7a20c0f
Merge remote-tracking branch 'origin/dev_windows_build' into dev_admt
JJuanill Jun 6, 2024
47bbf6d
admt: Renamed plugin and include directories
JJuanill Jun 6, 2024
290f4ec
admt: Connected button to output to text field
JJuanill Jun 10, 2024
6799ce1
admt: Added GRTimePlotAddon
JJuanill Jun 12, 2024
3eb4887
Merge remote-tracking branch 'origin/dev' into dev_admt
JJuanill Jun 12, 2024
69af835
admt: Implemented channel control and init methods
JJuanill Jun 14, 2024
76202a3
Merge remote-tracking branch 'origin/dev' into dev_admt
JJuanill Jun 18, 2024
6f1d4d8
admt: Update CMakeList
JJuanill Jun 18, 2024
0d3048f
Merge remote-tracking branch 'origin/dev' into dev_windows_build
JJuanill Jun 19, 2024
eced5a4
cmake: Added post build to copy library to binary path
JJuanill Jun 19, 2024
8f38f67
Merge remote-tracking branch 'origin/dev_windows_build' into dev_admt
JJuanill Jun 19, 2024
3b82d92
admt: Added historical graph
JJuanill Jun 26, 2024
32992dd
Merge remote-tracking branch 'origin/dev' into dev_admt
JJuanill Jun 26, 2024
292fe36
admt: Implemented GUI interface and controller
JJuanill Jul 9, 2024
c42ce79
admt: Fixed axis scales when changing displayed graph
JJuanill Jul 9, 2024
082b2bd
admt: Added calibration tab
JJuanill Jul 16, 2024
c11588f
admt: Implemented export and import raw calibration data
JJuanill Jul 18, 2024
e3138d9
admt: Implemented calibration routine in controller
JJuanill Jul 23, 2024
e51d571
admt: Layout for motor controls
JJuanill Jul 31, 2024
c2fe9a1
admt: Added stepper motor control for calibration
JJuanill Aug 9, 2024
995ed2f
admt: Adjusted Calibration GUI
JJuanill Aug 15, 2024
578d08d
admt: Added read device registry
JJuanill Aug 15, 2024
574d315
admt: Removed raw motor controls
JJuanill Aug 29, 2024
bfa930c
admt: Added registers tab
JJuanill Sep 2, 2024
6319781
admt: Added Sine and Cosine channels to raw calibration graph
JJuanill Sep 5, 2024
c4fcd2a
admt: Added calibration graph toggles
JJuanill Sep 6, 2024
9ea492e
admt: Refactored read and write to registry
JJuanill Sep 9, 2024
07499ac
admt: Implement compatible selected plugin
JJuanill Sep 10, 2024
fa0ae6f
admt: Adjusted UI
JJuanill Sep 10, 2024
7e1f45f
admt: Set debug to false
JJuanill Sep 11, 2024
f8e54a3
admt: Implemented status indicators for registers in utility tab
JJuanill Sep 25, 2024
44e8003
Update admtcontroller.cpp
RainDalena Sep 25, 2024
c8b07ea
admt: Implemented sequence read and write
JJuanill Sep 26, 2024
8c92443
admt: Corrected string output for binary and hex values
JJuanill Sep 26, 2024
c94c7a6
admt: Fixed pre-calibration FFT calculation
JJuanill Sep 26, 2024
bf8133b
admt: Fixed replot pre-calibration FFT graph after clear
JJuanill Sep 26, 2024
f740677
admt: Implemented GMR reset
JJuanill Sep 27, 2024
a4774ba
admt: Added min and max for line edit
JJuanill Oct 7, 2024
cc87dc8
Update admtcontroller.cpp
RainDalena Oct 7, 2024
0edc0a3
Update admtcontroller.cpp
RainDalena Oct 7, 2024
355f9ea
admt: Implemented GPIO Control
JJuanill Oct 8, 2024
d6d1669
admt: Implemented multithread for calibration data sampling
JJuanill Oct 10, 2024
c27de5a
Update admtcontroller.cpp
RainDalena Oct 10, 2024
7fb9806
admt: Fixed controls for post calibration data
JJuanill Oct 10, 2024
9b07a7f
Update admtcontroller.cpp
RainDalena Oct 10, 2024
eb8a263
Update admtcontroller.cpp
RainDalena Oct 10, 2024
bad4d54
Mag FFT and Harmonic Cal Algorithm adjustments.
RainDalena Oct 11, 2024
cc191b3
admt: Adjusted calibration and post calibration behaviors
JJuanill Oct 14, 2024
c0bdba7
Wrap angle errors to [-π, π] range
JJuanill Oct 15, 2024
5ff3060
Update admtcontroller.cpp
RainDalena Oct 15, 2024
fe18eac
Update admtcontroller.cpp
RainDalena Oct 16, 2024
5d57caa
Refactor angle error calculations and FFT in ADMTController
JJuanill Oct 16, 2024
b2ecf9f
Update admtcontroller.cpp
RainDalena Oct 16, 2024
0e66c72
Update admtcontroller.cpp
RainDalena Oct 16, 2024
c0e5839
Update admtcontroller.cpp
RainDalena Oct 16, 2024
aa16da0
Revert "Update admtcontroller.cpp"
RainDalena Oct 17, 2024
2274dc5
Revert "Update admtcontroller.cpp"
RainDalena Oct 17, 2024
31c2424
Revert "Update admtcontroller.cpp"
RainDalena Oct 17, 2024
6975b2a
Revert "Refactor angle error calculations and FFT in ADMTController"
RainDalena Oct 17, 2024
e9eae82
Revert "Update admtcontroller.cpp"
RainDalena Oct 17, 2024
b89654f
admt: Fixed admtcontroller.h
JJuanill Oct 22, 2024
ac61bac
admt: Adjusted UI to hide and show specific fault registers based on …
JJuanill Oct 30, 2024
87298fa
admt: Included motor controls in acquisition tab
JJuanill Oct 31, 2024
3cb74dc
Merge branch 'dev' of https://github.com/JJuanill/scopy into dev_admt
JJuanill Oct 31, 2024
cfed47f
admt: Merge to latest dev build
JJuanill Nov 4, 2024
322096c
admt: Hide MT Diagnostic indicator and register
JJuanill Nov 4, 2024
2cfe891
admt: Hide registers on sequence mode
JJuanill Nov 4, 2024
eb676ab
admt: Updated graph style
JJuanill Nov 5, 2024
05fa370
admt: Add read all registers
JJuanill Nov 6, 2024
de0b902
admt: Reverted changes to calibration samples graph
doun-doughnut Nov 12, 2024
ba825b3
admt: Initial implement of style helper
doun-doughnut Nov 12, 2024
e814721
admt: Included import samples in calibration data
doun-doughnut Nov 13, 2024
813a576
admt: Initial implement of acquisition graph data
doun-doughnut Nov 13, 2024
55814c9
admt: Added state for MT Diagnostics
doun-doughnut Nov 15, 2024
9607812
admt: Removed resizing acquisition list
doun-doughnut Nov 15, 2024
c227e44
admt: Improved stability for applying sequence
JJuanill Nov 25, 2024
83801bf
admt: Write zeros to fault register before read
JJuanill Nov 25, 2024
5dd5dcc
admt: Added fine control for DIGIOEN register
JJuanill Nov 26, 2024
6059ae7
admt: Applied fixes for calibration
JJuanill Nov 27, 2024
ada74cc
admt: Implemented multi-channel acquisition graph
JJuanill Dec 2, 2024
786f4cf
admt: Fixed crashing issue when calibrating
JJuanill Dec 5, 2024
80e15c3
admt: Implemented mapping and graph for acquisition graph variables
JJuanill Jan 7, 2025
9257431
admt: Implemented multi-thread operations to acquisition tab
JJuanill Jan 8, 2025
6c7b05c
admt: Implemented device status fault monitoring
JJuanill Jan 10, 2025
f7b34b2
admt: Code cleanup
JJuanill Jan 15, 2025
f3cb3b9
admt: Added disable states for tab widget while calibrating
JJuanill Jan 15, 2025
6303702
admt: Adjusted GPIO Monitor and Control
JJuanill Jan 16, 2025
1fee592
Merge branch 'dev' of https://github.com/JJuanill/scopy into dev_admt
JJuanill Jan 17, 2025
c87a533
admt: Applied latest dev branch
JJuanill Jan 17, 2025
0020c57
admt: File cleanup
JJuanill Jan 17, 2025
9623c06
admt: Added spinbox to new style property
JJuanill Jan 22, 2025
d6cc350
admt: Replaced timers with threads for utility tab
Jan 31, 2025
5e2b175
admt: Added license headers
Jan 31, 2025
17309a8
admt: Cleanup license headers for remaining files
Jan 31, 2025
53dac52
admt: Added regmap debug method
JJuanill Feb 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
admt: Add read all registers
- Changed register block widget to include CNVPAGE

Signed-off-by: John Lloyd Juanillo <[email protected]>
JJuanill committed Nov 6, 2024

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
commit 05fa3707499ae13d5761dd4403577a88a7efe180
14 changes: 8 additions & 6 deletions plugins/admt/include/admt/admtcontroller.h
Original file line number Diff line number Diff line change
@@ -155,25 +155,27 @@ class SCOPY_ADMT_EXPORT ADMTController : public QObject
const char* MotorAttributes[MOTOR_ATTR_COUNT] = { "amax", "rotate_vmax", "dmax",
"disable", "target_pos", "current_pos",
"ramp_mode" };
const uint32_t HarmonicRegisters[HARMONIC_REGISTER_COUNT] = { 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C };
const uint32_t ConfigurationRegisters[CONFIGURATION_REGISTER_COUNT] = { 0x01, 0x04, 0x06, 0x10, 0x12, 0x13, 0x1D, 0x23 };
const uint32_t ConfigurationPages[CONFIGURATION_REGISTER_COUNT] = { UINT32_MAX, UINT32_MAX, UINT32_MAX, 0x02, 0x02, 0x02, 0x02, 0x02 };
const uint32_t SensorRegisters[SENSOR_REGISTER_COUNT] = { 0x03, 0x05, 0x08, 0x10, 0x11, 0x12, 0x13, 0x18, 0x1D, 0x1E, 0x20, 0x23, 0x14 };
const uint32_t SensorPages[SENSOR_REGISTER_COUNT] = { UINT32_MAX, UINT32_MAX, UINT32_MAX, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 };
const uint32_t UniqueIdRegisters[UNIQID_REGISTER_COUNT] = { 0x1E, 0x1F, 0x20, 0x21 };
const uint32_t UniqueIdPages[UNIQID_REGISTER_COUNT] = { 0x02, 0x02, 0x02, 0x02 };
const uint32_t HarmonicRegisters[HARMONIC_REGISTER_COUNT] = { 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C };
const uint32_t HarmonicPages[HARMONIC_REGISTER_COUNT] = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 };
const uint32_t SensorRegisters[SENSOR_REGISTER_COUNT] = { 0x03, 0x05, 0x08, 0x10, 0x11, 0x12, 0x13, 0x18, 0x1D, 0x1E, 0x20, 0x23, 0x14 };
const uint32_t SensorPages[SENSOR_REGISTER_COUNT] = { UINT32_MAX, UINT32_MAX, UINT32_MAX, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 };

const char* getChannelId(Channel channel);
const char* getDeviceId(Device device);
const char* getDeviceAttribute(DeviceAttribute attribute);
const char* getMotorAttribute(MotorAttribute attribute);
const uint32_t getHarmonicRegister(HarmonicRegister registerID);
const uint32_t getConfigurationRegister(ConfigurationRegister registerID);
const uint32_t getConfigurationPage(ConfigurationRegister registerID);
const uint32_t getSensorRegister(SensorRegister registerID);
const uint32_t getSensorPage(SensorRegister registerID);
const uint32_t getUniqueIdRegister(UniqueIDRegister registerID);
const uint32_t getHarmonicRegister(HarmonicRegister registerID);
const uint32_t getHarmonicPage(HarmonicRegister registerID);
const uint32_t getUniqueIdPage(UniqueIDRegister registerID);
const uint32_t getSensorRegister(SensorRegister registerID);
const uint32_t getSensorPage(SensorRegister registerID);

void connectADMT();
void disconnectADMT();
12 changes: 7 additions & 5 deletions plugins/admt/include/admt/harmoniccalibration.h
Original file line number Diff line number Diff line change
@@ -24,6 +24,8 @@
#include <QIcon>
#include <QPen>
#include <QCheckBox>
#include <QFuture>
#include <QFutureWatcher>

#include <iio.h>
#include <iioutil/connectionprovider.h>
@@ -68,7 +70,7 @@ public Q_SLOTS:
void clearCommandLog();
void canCalibrate(bool);
void applySequence();
void readSequence();
bool readSequence();
Q_SIGNALS:
void runningChanged(bool);
void canCalibrateChanged(bool);
@@ -85,7 +87,7 @@ public Q_SLOTS:
afeDiag0, afeDiag1, afeDiag2;

QPushButton *openLastMenuButton, *calibrationStartMotorButton, *applyCalibrationDataButton, *calibrateDataButton, *extractDataButton,
*clearCommandLogButton, *applySequenceButton;
*clearCommandLogButton, *applySequenceButton, *readAllRegistersButton;
QButtonGroup *rightMenuButtonGroup;

QLineEdit *graphUpdateIntervalLineEdit, *dataSampleSizeLineEdit,
@@ -174,8 +176,8 @@ public Q_SLOTS:
void importCalibrationData();
void calibrationLogWrite(QString message = "");
void commandLogWrite(QString message);
void readMotorAttributeValue(ADMTController::MotorAttribute attribute, double& value);
void writeMotorAttributeValue(ADMTController::MotorAttribute attribute, double value);
int readMotorAttributeValue(ADMTController::MotorAttribute attribute, double& value);
int writeMotorAttributeValue(ADMTController::MotorAttribute attribute, double value);
void applyLineEditStyle(QLineEdit *widget);
void applyComboBoxStyle(QComboBox *widget, const QString& styleHelperColor = "CH0");
void applyTextStyle(QWidget *widget, const QString& styleHelperColor = "CH0", bool isBold = false);
@@ -201,7 +203,7 @@ public Q_SLOTS:
void updateFaultRegister();
void updateMTDiagnostics();
void changeStatusLEDColor(MenuControlButton *menuControlButton, QColor color, bool checked = true);
bool changeCNVPage(uint32_t page, QString registerName);
bool changeCNVPage(uint32_t page);
void toggleWidget(QPushButton *widget, bool value);
void GMRReset();
void updateCountValue();
5 changes: 3 additions & 2 deletions plugins/admt/include/admt/widgets/registerblockwidget.h
Original file line number Diff line number Diff line change
@@ -25,18 +25,19 @@ namespace scopy::admt {

QPushButton *m_readButton, *m_writeButton;

RegisterBlockWidget(QString header, QString description, uint32_t address, uint32_t defaultValue, RegisterBlockWidget::ACCESS_PERMISSION accessPermission, QWidget *parent = nullptr);
RegisterBlockWidget(QString header, QString description, uint32_t address, uint32_t cnvPage, RegisterBlockWidget::ACCESS_PERMISSION accessPermission, QWidget *parent = nullptr);
virtual ~RegisterBlockWidget();
QPushButton *readButton();
QPushButton *writeButton();
uint32_t getAddress();
uint32_t getCnvPage();
uint32_t getValue();
void setValue(uint32_t value);
RegisterBlockWidget::ACCESS_PERMISSION getAccessPermission();
public Q_SLOTS:
void onValueChanged(int);
private:
uint32_t m_address, m_value;
uint32_t m_address, m_value, m_cnvPage;
RegisterBlockWidget::ACCESS_PERMISSION m_accessPermission;

QSpinBox *m_spinBox;
11 changes: 9 additions & 2 deletions plugins/admt/src/admtcontroller.cpp
Original file line number Diff line number Diff line change
@@ -17,7 +17,6 @@
#include <iterator>
#include <iomanip>


static const size_t maxAttrSize = 512;

using namespace scopy::admt;
@@ -86,7 +85,15 @@ const uint32_t ADMTController::getHarmonicRegister(HarmonicRegister registerID)
if(registerID >= 0 && registerID < HARMONIC_REGISTER_COUNT){
return HarmonicRegisters[registerID];
}
return 0x0;
return UINT32_MAX;
}

const uint32_t ADMTController::getHarmonicPage(HarmonicRegister registerID)
{
if(registerID >= 0 && registerID < HARMONIC_REGISTER_COUNT){
return HarmonicPages[registerID];
}
return UINT32_MAX;
}

const uint32_t ADMTController::getConfigurationRegister(ConfigurationRegister registerID)
300 changes: 173 additions & 127 deletions plugins/admt/src/harmoniccalibration.cpp

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions plugins/admt/src/widgets/registerblockwidget.cpp
Original file line number Diff line number Diff line change
@@ -4,9 +4,10 @@
using namespace scopy;
using namespace scopy::admt;

RegisterBlockWidget::RegisterBlockWidget(QString header, QString description, uint32_t address, uint32_t defaultValue, RegisterBlockWidget::ACCESS_PERMISSION accessPermission, QWidget *parent)
RegisterBlockWidget::RegisterBlockWidget(QString header, QString description, uint32_t address, uint32_t cnvPage, RegisterBlockWidget::ACCESS_PERMISSION accessPermission, QWidget *parent)
: QWidget(parent)
, m_address(address)
, m_cnvPage(cnvPage)
, m_accessPermission(accessPermission)
{
QVBoxLayout *container = new QVBoxLayout(this);
@@ -40,13 +41,10 @@ RegisterBlockWidget::RegisterBlockWidget(QString header, QString description, ui
descriptionLabel->setAlignment(Qt::AlignTop);
descriptionLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);

// QLineEdit *lineEdit = new QLineEdit(menuSectionWidget);
// applyLineEditStyle(lineEdit);

m_spinBox = new PaddedSpinBox(menuSectionWidget);
applySpinBoxStyle(m_spinBox);

m_value = defaultValue;
m_value = 0x00;
m_spinBox->setValue(m_value);

QWidget *buttonsWidget = new QWidget(menuSectionWidget);
@@ -95,6 +93,8 @@ void RegisterBlockWidget::setValue(uint32_t value)

uint32_t RegisterBlockWidget::getAddress() { return m_address; }

uint32_t RegisterBlockWidget::getCnvPage() { return m_cnvPage; }

RegisterBlockWidget::ACCESS_PERMISSION RegisterBlockWidget::getAccessPermission() { return m_accessPermission; }

void RegisterBlockWidget::addReadButton(QWidget *parent)