Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ce80426790 | |||
| 72f3965881 | |||
| d41e7bf054 | |||
| 30bfa1cac5 | |||
| 235816fd20 | |||
| bd0966d2c9 | |||
| 9d5d90574a | |||
| 6effc5e906 | |||
| bc5de11b16 | |||
| aa488627f9 | |||
| ccaee6c5d1 | |||
| 323b030581 | |||
| b206012df2 | |||
| 21ec7e8467 | |||
| 398bc8241a | |||
| 8ca684604d | |||
| 72fe2b3681 | |||
| 5911e62029 | |||
| 682024091f | |||
| 335de72bc5 | |||
| 8e5055d6b8 | |||
| 1cab6e14ff |
24
.gitea/workflows/action.yaml
Normal file
24
.gitea/workflows/action.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
name: Test And Build
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
Lint:
|
||||
runs-on: linepics
|
||||
steps:
|
||||
- name: checkout repo
|
||||
uses: actions/checkout@v4
|
||||
- name: cppcheck
|
||||
run: cppcheck --std=c++17 --addon=cert --addon=misc --error-exitcode=1 src/*.cpp
|
||||
- name: formatting
|
||||
run: clang-format --style=file --Werror --dry-run src/*.cpp
|
||||
Build:
|
||||
runs-on: linepics
|
||||
steps:
|
||||
- name: checkout repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'true'
|
||||
- run: |
|
||||
sed -i 's/ARCH_FILTER=.*/ARCH_FILTER=linux%/' Makefile
|
||||
echo -e "\nIGNORE_SUBMODULES += sinqmotor" >> Makefile
|
||||
make install
|
||||
@@ -1,58 +0,0 @@
|
||||
default:
|
||||
image: docker.psi.ch:5000/sinqdev/sinqepics:latest
|
||||
|
||||
stages:
|
||||
- lint
|
||||
- build
|
||||
- test
|
||||
|
||||
cppcheck:
|
||||
stage: lint
|
||||
script:
|
||||
- cppcheck --std=c++17 --addon=cert --addon=misc --error-exitcode=1 src/*.cpp
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
tags:
|
||||
- sinq
|
||||
|
||||
formatting:
|
||||
stage: lint
|
||||
script:
|
||||
- clang-format --style=file --Werror --dry-run src/*.cpp
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
tags:
|
||||
- sinq
|
||||
|
||||
# clangtidy:
|
||||
# stage: lint
|
||||
# script:
|
||||
# - curl https://docker.psi.ch:5000/v2/_catalog
|
||||
# # - dnf update -y
|
||||
# # - dnf install -y clang-tools-extra
|
||||
# # - clang-tidy sinqEPICSApp/src/*.cpp sinqEPICSApp/src/*.c sinqEPICSApp/src/*.h -checks=cppcoreguidelines-*,cert-*
|
||||
# # tags:
|
||||
# # - sinq
|
||||
|
||||
build_module:
|
||||
stage: build
|
||||
script:
|
||||
- export SINQMOTOR_VERSION="$(grep 'sinqMotor_VERSION=' Makefile | cut -d= -f2)"
|
||||
- git clone --depth 1 --branch "${SINQMOTOR_VERSION}" https://gitlab-ci-token:${CI_JOB_TOKEN}@git.psi.ch/sinq-epics-modules/sinqmotor.git
|
||||
- pushd sinqmotor
|
||||
- sed -i 's/ARCH_FILTER=.*/ARCH_FILTER=linux%/' Makefile
|
||||
- echo "LIBVERSION=${SINQMOTOR_VERSION}" >> Makefile
|
||||
- make install
|
||||
- popd
|
||||
- sed -i 's/ARCH_FILTER=.*/ARCH_FILTER=linux%/' Makefile
|
||||
- echo "LIBVERSION=${CI_COMMIT_TAG:-0.0.1}" >> Makefile
|
||||
- make install
|
||||
- cp -rT "/ioc/modules/turboPmac/$(ls -U /ioc/modules/turboPmac/ | head -1)" "./turboPmac-${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}"
|
||||
artifacts:
|
||||
name: "turboPmac-${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}"
|
||||
paths:
|
||||
- "turboPmac-${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}/*"
|
||||
expire_in: 1 week
|
||||
when: always
|
||||
tags:
|
||||
- sinq
|
||||
2
Makefile
2
Makefile
@@ -34,4 +34,4 @@ TEMPLATES += db/turboPmac.db
|
||||
DBDS += sinqMotor/src/sinqMotor.dbd
|
||||
DBDS += src/turboPmac.dbd
|
||||
|
||||
USR_CFLAGS += -Wall -Wextra -Weffc++ -Wunused-result -Werror # -Wpedantic // Does not work because EPICS macros trigger warnings
|
||||
USR_CFLAGS += -Wall -Wextra -Weffc++ -Wunused-result -Werror -fvisibility=hidden # -Wpedantic // Does not work because EPICS macros trigger warnings
|
||||
Submodule sinqMotor updated: c65a8de5dd...7a0de4e9d9
@@ -230,8 +230,7 @@ static asynStatus sendPmacGetBuffer(pmacPvt *pPmacPvt, asynUser *pasynUser,
|
||||
|
||||
// =============================================================================
|
||||
|
||||
epicsShareFunc int pmacAsynIPPortConfigure(const char *portName,
|
||||
const char *hostInfo) {
|
||||
int pmacAsynIPPortConfigure(const char *portName, const char *hostInfo) {
|
||||
asynStatus status = asynSuccess;
|
||||
asynInterface *int32LowerLevelInterface = NULL;
|
||||
asynInterface *octetLowerLevelInterface = NULL;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define asynInterposePmac_H
|
||||
|
||||
#include <epicsExport.h>
|
||||
#include <macros.h>
|
||||
#include <shareLib.h>
|
||||
|
||||
/*
|
||||
@@ -25,8 +26,7 @@ extern "C" {
|
||||
* 172.23.243.156:1025)
|
||||
* @return status
|
||||
*/
|
||||
epicsShareFunc int pmacAsynIPPortConfigure(const char *portName,
|
||||
const char *hostInfo);
|
||||
int HIDDEN pmacAsynIPPortConfigure(const char *portName, const char *hostInfo);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
#include "turboPmacController.h"
|
||||
#include <memory>
|
||||
|
||||
struct turboPmacAxisImpl;
|
||||
struct HIDDEN turboPmacAxisImpl;
|
||||
|
||||
class turboPmacAxis : public sinqAxis {
|
||||
class HIDDEN turboPmacAxis : public sinqAxis {
|
||||
public:
|
||||
/**
|
||||
* @brief Construct a new turboPmacAxis
|
||||
|
||||
@@ -41,7 +41,7 @@ struct turboPmacControllerImpl {
|
||||
// User for writing int32 values to the port driver.
|
||||
asynUser *pasynInt32SyncIOipPort;
|
||||
|
||||
// Indices of additional PVs
|
||||
// Indices of additional ParamLib entries
|
||||
int rereadEncoderPosition;
|
||||
int readConfig;
|
||||
int flushHardware;
|
||||
@@ -254,9 +254,21 @@ asynStatus turboPmacController::writeRead(int axisNo, const char *command,
|
||||
pasynOctetSyncIOipPort(), command, commandLength, response, MAXBUF_,
|
||||
pTurboPmacC_->comTimeout, &nbytesOut, &nbytesIn, &eomReason);
|
||||
|
||||
// if (strchr(command, '=')) {
|
||||
// usleep(20000);
|
||||
// }
|
||||
/*
|
||||
If sth. is written to the controller, it needs some time to process the
|
||||
command. However, the controller returns the acknowledgment via
|
||||
pasynOctetSyncIO->writeRead immediately, signalling to the driver that it is
|
||||
ready to receive the next command. In practice, this can result in commands
|
||||
getting discarded on the driver side or in bringing the driver in undefined
|
||||
states (e.g. stuck in status 1).
|
||||
|
||||
To prevent this, we wait for 20 ms after a write command to give the
|
||||
controller enough time to process everything. A write command can be
|
||||
identified by looking for the equal sign.
|
||||
*/
|
||||
if (strchr(command, '=')) {
|
||||
usleep(20000);
|
||||
}
|
||||
|
||||
msgPrintControlKey comKey =
|
||||
msgPrintControlKey(portName, axisNo, __PRETTY_FUNCTION__, __LINE__);
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
// Forward declaration of the controller class to resolve the cyclic dependency
|
||||
// between the controller and the axis .h-file. See
|
||||
// https://en.cppreference.com/w/cpp/language/class.
|
||||
class turboPmacAxis;
|
||||
class HIDDEN turboPmacAxis;
|
||||
|
||||
struct turboPmacControllerImpl;
|
||||
struct HIDDEN turboPmacControllerImpl;
|
||||
|
||||
class turboPmacController : public sinqController {
|
||||
class HIDDEN turboPmacController : public sinqController {
|
||||
public:
|
||||
/**
|
||||
* @brief Construct a new turboPmacController object. This function is meant
|
||||
@@ -93,7 +93,8 @@ class turboPmacController : public sinqController {
|
||||
* @return asynStatus
|
||||
*/
|
||||
asynStatus writeRead(int axisNo, const char *command, char *response,
|
||||
int numExpectedResponses);
|
||||
int numExpectedResponses)
|
||||
__attribute__((visibility("hidden")));
|
||||
|
||||
/**
|
||||
* @brief Specialized version of sinqController::couldNotParseResponse
|
||||
|
||||
Reference in New Issue
Block a user