Skip to content

Commit

Permalink
Merge pull request #8 from KatLab-MiyazakiUniv/ticket-KLI-33
Browse files Browse the repository at this point in the history
close #KLI-33 GitHub Actionsにおけるclang-format実行コマンドの修正
  • Loading branch information
aridome222 authored Jun 4, 2024
2 parents 95c9bbd + d6680b7 commit 19fac07
Show file tree
Hide file tree
Showing 17 changed files with 748 additions and 51 deletions.
50 changes: 25 additions & 25 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -7,56 +7,56 @@

Language: Cpp
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: true
AlignOperands: true
AlignTrailingComments: true
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BinPackParameters: true
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 100
BreakStringLiterals: true
ColumnLimit: 100
CommentPragmas: '\*'
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
IndentCaseLabels: true
IndentWidth: 2
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
PenaltyBreakComment: 300
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
Expand All @@ -67,11 +67,11 @@ SortIncludes: false
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: Never
SpaceInEmptyParentheses: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/format-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@ jobs:
format-check:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Checkout
uses: actions/checkout@v2

- name: Install clang-format
run: sudo apt-get -y install clang-format
- name: Install clang-format
run: sudo apt-get -y install clang-format

- name: Format
run: find ./test ./module -type f -name "*.cpp" -o -name "*.h" | xargs clang-format --dry-run --Werror *.h *.cpp
# 実行コマンドを変更 2024/05/30 YKhm20020
# 旧コマンド: find ./test ./module -type f -name "*.cpp" -o -name "*.h" | xargs clang-format --dry-run --Werror *.h *.cpp
# --Werror の後は拡張子を指定する必要ない?
# 参考: https://www.turtlestoffel.com/Clang-Format, https://github.com/vllm-project/vllm/blob/main/.github/workflows/clang-format.yml, https://community.cesium.com/t/ci-cd-deployment-issues/28272
- name: Format
run: find ./test ./module -type f -name "\*.cpp" -o -name "\*.h" | xargs clang-format --dry-run --Werror
88 changes: 88 additions & 0 deletions module/API/Measurer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/**
* @file Measurer.cpp
* @brief 計測に用いる関数をまとめたラッパークラス
* @author keiya121
*/

#include "Measurer.h"

Measurer::Measurer()
: colorSensor(PORT_2),
sonarSensor(PORT_3),
leftWheel(PORT_C),
rightWheel(PORT_B),
armMotor(PORT_A)
{
}

// 明るさを取得
// 参考: https://tomari.org/main/java/color/ccal.html
int Measurer::getBrightness()
{
// RGBモードと光センサモードを併用すると動作が悪くなるためRGBモードで取得する
// 参考: https://qiita.com/kawanon868/items/5d52eb291c3f71af0419
rgb_raw_t rgb = getRawColor();
int brightness = std::max({ rgb.r, rgb.g, rgb.b }) * 100 / 255; // 明度を取得して0-100に正規化
return brightness;
}

// RGB値を取得
rgb_raw_t Measurer::getRawColor()
{
rgb_raw_t rgb;
colorSensor.getRawColor(rgb);
return rgb;
}

// 左モータ角位置取得
int Measurer::getLeftCount()
{
return leftWheel.getCount();
}

// 右モータ角位置取得
int Measurer::getRightCount()
{
return rightWheel.getCount();
}

// アームモータ角位置取得
int Measurer::getArmMotorCount()
{
return armMotor.getCount();
}

// 正面から見て左ボタンの押下状態を取得
bool Measurer::getLeftButton()
{
return ev3_button_is_pressed(LEFT_BUTTON);
}

// 正面から見て右ボタンの押下状態を取得
bool Measurer::getRightButton()
{
return ev3_button_is_pressed(RIGHT_BUTTON);
}

// 中央ボタンの押下状態を取得
bool Measurer::getEnterButton()
{
return ev3_button_is_pressed(ENTER_BUTTON);
}

// 超音波センサからの距離を取得
int Measurer::getForwardDistance()
{
int distance = sonarSensor.getDistance();

// センサが認識していない時が-1になる
if(distance == -1) distance = 1000;

return distance;
}

// SPIKEの電圧を取得
double Measurer::getVoltage()
{
return (double)ev3_battery_voltage_mV() / 1000.0;
}
92 changes: 92 additions & 0 deletions module/API/Measurer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/**
* @file Measurer.h
* @brief 計測に用いる関数をまとめたラッパークラス
* @author keiya121
*/

#ifndef MEASURER_H
#define MEASURER_H

#include <algorithm>
#include "ev3api.h"
#include "ColorSensor.h"
#include "SonarSensor.h"
#include "Motor.h"

class Measurer {
public:
/**
* @brief コンストラクタ
*/
Measurer();

/**
* @brief 明るさを取得
* @return 反射光の強さ(0-100)
*/
int getBrightness();

/**
* @brief RGB値を取得
* @return RGB値
*/
rgb_raw_t getRawColor();

/**
* @brief 左モータ角位置取得
* @return 左モータ角位置[deg]
*/
int getLeftCount();

/**
* @brief 右モータ角位置取得
* @return 右モータ角位置[deg]
*/
int getRightCount();

/**
* @brief アームモータ角位置取得
* @return アームモータ角位置[deg]
*/
int getArmMotorCount();

/**
* @brief 正面から見て左ボタンの押下状態を取得
* @return 左ボタンの押下状態 true:押されてる, false:押されていない
*/
bool getLeftButton();

/**
* @brief 正面から見て右ボタンの押下状態を取得
* @return 右ボタンの押下状態 true:押されてる, false:押されていない
*/
bool getRightButton();

/**
* @brief 中央ボタンの押下状態を取得
* @return 中央ボタンの押下状態 true:押されてる, false:押されていない
*/
bool getEnterButton();

/**
* @brief 超音波センサからの距離を取得
* @return 超音波センサからの距離[cm]
* @note センサが認識していない時は1000を返す
*/
int getForwardDistance();

/**
* @brief SPIKEの電圧を取得
* @return SPIKEの電圧[V]
*/
double getVoltage();

private:
ev3api::ColorSensor colorSensor;
ev3api::SonarSensor sonarSensor;
ev3api::Motor leftWheel;
ev3api::Motor rightWheel;
ev3api::Motor armMotor;
};

#endif
2 changes: 1 addition & 1 deletion module/EtRobocon2024.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ void EtRobocon2024::start()
// void EtRobocon2024::sigint(int _)
// {
// _exit(0); // システムコールで強制終了
// }
// }
25 changes: 25 additions & 0 deletions test/DummyRobot.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/**
* @file DummyRobot.cpp
* @brief 実機内部の状態を管理するダミーファイル
* @author keiya121
*/

#include "DummyRobot.h"

// 静的メンバ変数の初期化
DummyRobot::ButtonState DummyRobot::buttonState = DummyRobot::ButtonState::none;

// コンストラクタ
DummyRobot::DummyRobot() {}

// 実機内部のボタンの押下状態を設定する静的メソッド
void DummyRobot::setButtonState(ButtonState state)
{
buttonState = state;
}

// 実機内部のボタンの押下状態を取得する静的メソッド
DummyRobot::ButtonState DummyRobot::getButtonState()
{
return buttonState;
}
34 changes: 34 additions & 0 deletions test/DummyRobot.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/**
* @file DummyRobot.h
* @brief 実機内部の状態を管理するダミーファイル
* @author keiya121
*/

#ifndef DUMMYROBOT_H
#define DUMMYROBOT_H

class DummyRobot {
public:
// 実機内部のボタンの押下状態を表す列挙型
enum class ButtonState {
left, // 実機の正面から見て左側のボタンが押されている状態
enter, // 実機の中央ボタンが押されている状態
right, // 実機の正面から見て右側のボタンが押されている状態
none // ボタンがいずれも押されていない状態
};

// コンストラクタ
DummyRobot();

// 実機内部のボタンの押下状態を設定するメソッド
static void setButtonState(ButtonState state);

// 実機内部のボタンの押下状態を取得するメソッド
static ButtonState getButtonState();

private:
// 実機内部のボタンの押下状態を管理するメンバ変数
static ButtonState buttonState;
};

#endif
Loading

0 comments on commit 19fac07

Please sign in to comment.