Skip to content

Commit 7dee097

Browse files
committed
Code style improvements; Modes order changed
1 parent 4877663 commit 7dee097

File tree

1 file changed

+27
-34
lines changed

1 file changed

+27
-34
lines changed

servotester/servotester.c

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ uint16_t pWidth = 1500;
1414
int8_t dir = 1;
1515

1616
enum Modes {
17-
Manual,
1817
Center,
18+
Manual,
1919
Auto,
2020
};
2121

2222
const char* const modes_text[Auto + 1] = {
23-
"Manual",
2423
"Center",
25-
"Auto",
24+
"Manual",
25+
" Auto",
2626
};
2727

2828
uint8_t mode = Manual;
@@ -37,7 +37,7 @@ typedef struct {
3737
InputEvent input;
3838
} ServoTesterEvent;
3939

40-
static void draw_callback(Canvas* canvas, void* ctx) {
40+
static void servotester_draw_callback(Canvas* canvas, void* ctx) {
4141
UNUSED(ctx);
4242

4343
char temp_str[36];
@@ -51,16 +51,6 @@ static void draw_callback(Canvas* canvas, void* ctx) {
5151
canvas_draw_line(canvas, 14, 30, 14, 20);
5252
canvas_draw_line(canvas, 114, 30, 114, 20);
5353

54-
/*
55-
14-1000
56-
104-2000
57-
58-
59-
60-
(pWidth-1000)/10+10 === 0-1
61-
62-
63-
*/
6454
canvas_draw_frame(canvas, (pWidth - 1000) / 10.2 + 14, 20, 3, 10);
6555

6656
snprintf(temp_str, sizeof(temp_str), "%i us", pWidth);
@@ -70,21 +60,21 @@ static void draw_callback(Canvas* canvas, void* ctx) {
7060
canvas_draw_str(canvas, 50, 50, modes_text[mode]);
7161
}
7262

73-
static void input_callback(InputEvent* input_event, void* ctx) {
63+
static void servotester_input_callback(InputEvent* input_event, void* ctx) {
7464
furi_assert(ctx);
7565
FuriMessageQueue* event_queue = ctx;
7666
ServoTesterEvent event = {.type = EventTypeInput, .input = *input_event};
7767
furi_message_queue_put(event_queue, &event, FuriWaitForever);
7868
}
7969

80-
static void timer_callback(FuriMessageQueue* event_queue) {
70+
static void servotester_timer_callback(FuriMessageQueue* event_queue) {
8171
furi_assert(event_queue);
8272

8373
ServoTesterEvent event = {.type = EventTypeTick};
8474
furi_message_queue_put(event_queue, &event, 0);
8575
}
8676

87-
void setServoPWM(uint32_t freq, uint32_t compare) {
77+
void servotester_set_servo_pwm(uint32_t freq, uint32_t compare) {
8878
uint32_t freq_div = 64000000LU / freq;
8979
uint32_t prescaler = freq_div / 0x10000LU;
9080
uint32_t period = freq_div / (prescaler + 1);
@@ -94,8 +84,8 @@ void setServoPWM(uint32_t freq, uint32_t compare) {
9484
LL_TIM_OC_SetCompareCH1(TIM1, compare);
9585
}
9686

97-
void updatePwm() {
98-
setServoPWM(DEFAULT_FREQ, pWidth * 3.2);
87+
void servotester_update_pwm() {
88+
servotester_set_servo_pwm(DEFAULT_FREQ, pWidth * 3.2);
9989
}
10090

10191
int32_t servotester_app(void* p) {
@@ -108,64 +98,67 @@ int32_t servotester_app(void* p) {
10898
ViewPort* view_port = view_port_alloc();
10999

110100
// callbacks init
111-
view_port_draw_callback_set(view_port, draw_callback, NULL);
112-
view_port_input_callback_set(view_port, input_callback, event_queue);
101+
view_port_draw_callback_set(view_port, servotester_draw_callback, NULL);
102+
view_port_input_callback_set(view_port, servotester_input_callback, event_queue);
113103

114104
Gui* gui = furi_record_open(RECORD_GUI);
115105
gui_add_view_port(gui, view_port, GuiLayerFullscreen);
116106

117-
FuriTimer* timer = furi_timer_alloc(timer_callback, FuriTimerTypePeriodic, event_queue);
107+
// Timer for automatic mode
108+
FuriTimer* timer =
109+
furi_timer_alloc(servotester_timer_callback, FuriTimerTypePeriodic, event_queue);
118110
furi_timer_start(timer, 5);
119111

120112
//GPIO init
121-
furi_hal_power_enable_otg();
122-
furi_hal_pwm_start(FuriHalPwmOutputIdTim1PA7, 50, 4);
123-
setServoPWM(DEFAULT_FREQ, pWidth * 3.2);
113+
furi_hal_power_enable_otg(); // Turn 5V
114+
furi_hal_pwm_start(FuriHalPwmOutputIdTim1PA7, 50, 4); // Init Tim1
115+
servotester_set_servo_pwm(DEFAULT_FREQ, pWidth * 3.2); // set our PWM
124116

125117
while(1) {
126118
furi_check(furi_message_queue_get(event_queue, &event, FuriWaitForever) == FuriStatusOk);
127119
if(event.type == EventTypeInput) {
128120
if(event.input.key == InputKeyBack) {
129-
furi_hal_power_disable_otg();
130-
furi_hal_pwm_stop(FuriHalPwmOutputIdTim1PA7);
131121
break;
132122
} else if(event.input.key == InputKeyOk) {
133123
if(event.input.type == InputTypeRelease) {
134124
if(mode == Auto) {
135-
mode = Manual;
125+
mode = Center;
136126
} else {
137127
mode++;
138128
}
139129

140130
if(mode == Center) {
141131
pWidth = 1500;
142-
updatePwm();
132+
servotester_update_pwm();
143133
}
144134
}
145135
} else if(event.input.key == InputKeyLeft) {
146136
if(pWidth > 1000) pWidth--;
147-
updatePwm();
137+
servotester_update_pwm();
148138
} else if(event.input.key == InputKeyRight) {
149139
if(pWidth < 2000) pWidth++;
150-
updatePwm();
140+
servotester_update_pwm();
151141
} else if(event.input.key == InputKeyDown) {
152142
if(pWidth >= 1010) pWidth -= 10;
153-
updatePwm();
143+
servotester_update_pwm();
154144
} else if(event.input.key == InputKeyUp) {
155145
if(pWidth <= 1990) pWidth += 10;
156-
updatePwm();
146+
servotester_update_pwm();
157147
}
158148
} else if(event.type == EventTypeTick) {
159149
if(mode == Auto) {
160150
pWidth += dir;
161151
if(pWidth > 1990 || pWidth < 1010) {
162152
dir = dir * -1;
163153
}
164-
updatePwm();
154+
servotester_update_pwm();
165155
}
166156
}
167157
}
168158

159+
furi_hal_power_disable_otg();
160+
furi_hal_pwm_stop(FuriHalPwmOutputIdTim1PA7);
161+
169162
furi_timer_free(timer);
170163
furi_message_queue_free(event_queue);
171164

0 commit comments

Comments
 (0)