Automatically add code to main.c
All checks were successful
Build & Publish / build (push) Successful in 8m36s

This commit is contained in:
Florian Kaiser 2023-08-03 14:44:16 +02:00
parent 555419f701
commit cfe0381610
Signed by: H4CK3R-01
SSH Key Fingerprint: SHA256:Zh0ZE/S6X5mfivz9uLnbQizfkJfEQTjL8FlWbPqhqk0
6 changed files with 79 additions and 41 deletions

View File

@ -8,4 +8,6 @@ COPY snippets /opt/snippets
RUN sudo chmod +x /opt/script.sh
WORKDIR /opt
ENTRYPOINT /opt/script.sh

View File

@ -20,19 +20,6 @@ display_result() {
--msgbox "$2" -1 -1
}
display_code() {
string="----- Imports -----
${2}
----- Code -----
${3}"
dialog --title "$1" \
--backtitle "Configure Zephyr RTOS" \
--no-collapse \
--msgbox "$string" -1 -1
}
main_dialog() {
selection=$(dialog --stdout \
--backtitle "Configure Zephyr RTOS" \
@ -201,10 +188,13 @@ sensors_dialog() {
case $sensors in
1 ) # Button
imports=$(cat snippets/button/imports.txt)
code=$(cat snippets/led/code.txt)
display_code "Use this code snippet" "$imports" "$code"
code=$(cat snippets/button/code.txt)
echo "$code" >> /workdir/app/src/main.c
config=$(cat snippets/button/config.txt)
echo "$config" >> /workdir/app/prj.conf
display_result 'Added functionality' "Added functionality successfully at the end of main.c.\nYou have to call the function like in the example manually."
;;
2 )
# TODO
@ -227,10 +217,13 @@ actuators_dialog() {
case $actuators in
1 ) # LED
imports=$(cat snippets/led/imports.txt)
code=$(cat snippets/led/code.txt)
display_code "Use this code snippet" "$imports" "$code"
echo "$code" >> /workdir/app/src/main.c
config=$(cat snippets/led/config.txt)
echo "$config" >> /workdir/app/prj.conf
display_result 'Added functionality' "Added functionality successfully at the end of main.c.\nYou have to call the function like in the example manually."
;;
2 )
# TODO

View File

@ -1,3 +1,10 @@
/* --------------------------- */
/* Buttons */
/* --------------------------- */
/* Imports / Declarations */
#include <zephyr/device.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/sys/util.h>
@ -25,13 +32,14 @@ static struct gpio_dt_spec led = GPIO_DT_SPEC_GET_OR(DT_ALIAS(led0), gpios,
{0});
/* Functions */
void button_pressed(const struct device *dev, struct gpio_callback *cb,
uint32_t pins)
{
printk("Button pressed at %" PRIu32 "\n", k_cycle_get_32());
}
int button(void)
int initialize_button(void)
{
int ret;
@ -75,6 +83,10 @@ int button(void)
printk("Set up LED at %s pin %d\n", led.port->name, led.pin);
}
}
}
int button_activate_led(void) {
int ret;
printk("Press the button\n");
if (led.port) {
@ -90,3 +102,15 @@ int button(void)
}
return 0;
}
/*
Example:
int main(void)
{
initialize_button();
button_activate_led();
return 0;
}
*/

View File

@ -0,0 +1 @@
CONFIG_GPIO=y

View File

@ -1,32 +1,48 @@
/* --------- */
/* LED */
/* --------- */
/* --------------------------- */
/* LED */
/* --------------------------- */
/* Imports / Declarations */
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
/* The devicetree node identifier for the "led0" alias. */
#define LED0_NODE DT_ALIAS(led0)
/*
* A build error on this line means your board is unsupported.
* See the sample documentation for information on how to fix this.
*/
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
/* Functions */
int blink_led(void) {
int initialize_led(void) {
int ret;
if (!gpio_is_ready_dt(&led)) {
return 0;
}
if (!gpio_is_ready_dt(&led)) {
return 0;
}
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
if (ret < 0) {
return 0;
}
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
if (ret < 0) {
return 0;
}
}
while (1) {
ret = gpio_pin_toggle_dt(&led);
if (ret < 0) {
return 0;
}
k_msleep(1000);
}
return 0;
int blink_led(int blink_delay) {
int ret;
while (1) {
ret = gpio_pin_toggle_dt(&led);
if (ret < 0) {
return 0;
}
k_msleep(blink_delay);
}
return 0;
}
/*
@ -34,7 +50,8 @@ Example:
int main(void)
{
blink_led();
initialize_led();
blink_led(10000); # Millis
return 0;
}

1
snippets/led/config.txt Normal file
View File

@ -0,0 +1 @@
CONFIG_GPIO=y