From c2a11924941368f44ec31268e18ad87eb7be1fff Mon Sep 17 00:00:00 2001 From: Joakim Bech Date: Fri, 2 Sep 2016 10:43:03 +0200 Subject: Initial commit Signed-off-by: Joakim Bech --- pkg.yml | 30 +++++++++++++++++ src/main.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 pkg.yml create mode 100755 src/main.c diff --git a/pkg.yml b/pkg.yml new file mode 100644 index 0000000..709481b --- /dev/null +++ b/pkg.yml @@ -0,0 +1,30 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +pkg.name: apps/blinky +pkg.type: app +pkg.description: Basic example application which blinks an LED. +pkg.author: "Apache Mynewt " +pkg.homepage: "http://mynewt.apache.org/" +pkg.keywords: + +pkg.deps: + - "@apache-mynewt-core/libs/os" + - "@apache-mynewt-core/hw/hal" + - "@apache-mynewt-core/libs/console/full" diff --git a/src/main.c b/src/main.c new file mode 100755 index 0000000..816aa96 --- /dev/null +++ b/src/main.c @@ -0,0 +1,112 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +#include "os/os.h" +#include "bsp/bsp.h" +#include "hal/hal_gpio.h" +#include +#include +#ifdef ARCH_sim +#include +#endif + +/* Init all tasks */ +volatile int tasks_initialized; +int init_tasks(void); + +/* Task 1 */ +#define BLINKY_TASK_PRIO (1) +#define BLINKY_STACK_SIZE OS_STACK_ALIGN(256) + +struct os_task blinky_task; +os_stack_t blinky_stack[BLINKY_STACK_SIZE]; +static volatile int g_task1_loops; + +/* For LED toggling */ +int g_led_pin; + +void +blinky_task_handler(void *arg) +{ + struct os_task *t; + + g_led_pin = LED_BLINK_PIN; + hal_gpio_init_out(g_led_pin, 1); + + while (1) { + t = os_sched_get_current_task(); + assert(t->t_func == blinky_task_handler); + + ++g_task1_loops; + + /* Wait one second */ + os_time_delay(1000); + + /* Toggle the LED */ + hal_gpio_toggle(g_led_pin); + } +} + +/** + * init_tasks + * + * Called by main.c after os_init(). This function performs initializations + * that are required before tasks are running. + * + * @return int 0 success; error otherwise. + */ +int +init_tasks(void) +{ + os_task_init(&blinky_task, "blinky", blinky_task_handler, NULL, + BLINKY_TASK_PRIO, OS_WAIT_FOREVER, blinky_stack, BLINKY_STACK_SIZE); + + tasks_initialized = 1; + + return 0; +} + +/** + * main + * + * The main function for the project. This function initializes the os, calls + * init_tasks to initialize tasks (and possibly other objects), then starts the + * OS. We should not return from os start. + * + * @return int NOTE: this function should never return! + */ +int +main(int argc, char **argv) +{ + int rc; + +#ifdef ARCH_sim + mcu_sim_parse_args(argc, argv); +#endif + + os_init(); + + rc = init_tasks(); + os_start(); + + /* os start should never return. If it does, this should be an error */ + assert(0); + + return rc; +} + -- cgit v1.2.3