{"id":17699915,"url":"https://github.com/dessaya/cmd-uart","last_synced_at":"2025-07-14T16:05:57.549Z","repository":{"id":110002274,"uuid":"211387221","full_name":"dessaya/cmd-uart","owner":"dessaya","description":"TP1 Programación de Microprocesadores CESE","archived":false,"fork":false,"pushed_at":"2019-10-10T01:06:41.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-31T01:49:59.933Z","etag":null,"topics":["c","edu-ciaa-nxp","embedded-systems"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dessaya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-27T19:20:23.000Z","updated_at":"2019-11-13T19:35:25.000Z","dependencies_parsed_at":"2023-04-09T00:33:20.718Z","dependency_job_id":null,"html_url":"https://github.com/dessaya/cmd-uart","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dessaya/cmd-uart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dessaya%2Fcmd-uart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dessaya%2Fcmd-uart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dessaya%2Fcmd-uart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dessaya%2Fcmd-uart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dessaya","download_url":"https://codeload.github.com/dessaya/cmd-uart/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dessaya%2Fcmd-uart/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265314339,"owners_count":23745247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","edu-ciaa-nxp","embedded-systems"],"created_at":"2024-10-24T17:07:54.170Z","updated_at":"2025-07-14T16:05:57.525Z","avatar_url":"https://github.com/dessaya.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cmd-uart\n\nTrabajo práctico para la materia Programación de Microprocesadores de la\n[Carrera de Especialización en Sistemas Embebidos](http://laboratorios.fi.uba.ar/lse/especializacion.html)\nde la UBA.\n\nEl firmware corre sobre la placa de desarrollo [EDU-CIAA-NXP](http://www.proyecto-ciaa.com.ar/index_comprar_educiaanxp.html),\ny para compilar es necesario utilizar [Firmware v3](https://github.com/epernia/firmware_v3).\n\nEl objetivo del firmware es simular una línea de comandos simple mediante la\nUART. El funcionamiento se describe en el documento de [arquitectura y diseño\ndetallado](https://docs.google.com/document/d/12o3bVxmdhhSE5jTOyUo8WwF6yKrkli2oRkp-YUJybcc/edit?usp=sharing).\n\nLos módulos (pares de archivos `.c` y `.h`) son:\n\n* `cmd-uart.c` contiene la función `main`.\n* `fsm` implementa la máquina de estados (ver abajo).\n    * `state_idle` contiene las funciones `enter` y `update` del estado `IDLE`,\n      que sería el \"menú principal\" en el que el usuario puede elegir un modo\n      de funcionamiento (ejemplo: `pvsub` para pasar al modo \"Process Variable\n      Publisher\").\n    * `state_tcn` contiene las funciones `enter` y `update` de los estados\n      correspondientes a cada uno de los modos de funcionamiento, que aun no\n      hacen nada. Lo único que puede hacer el usuario en estos modos es\n      ingresar el comando `back` para volver al menú principal.\n* `terminal` abstrae la entrada/salida de texto.\n* `command_line` para que cada estado pueda definir los comandos y operaciones disponibles.\n\n## Máquina de estados\n\nCada estado tiene 2 funciones `enter` y `update`. La función `enter` se llama cuando\nse ingresa a ese estado, y `update` se llama periódicamente cuando se está en ese\nestado.\n\nLa función `update` puede devolver una señal. Esa señal puede provocar o no una\ntransición; no es responsabilidad de un estado saber cuál es el próximo estado.\n\nEn `fsm.c` se configuran los estados disponibles y cómo son las transiciones\nentre estados. Por ejemplo `{STATE_INIT, SIGNAL_DONE, STATE_IDLE}` determina que\nsi en el estado `INIT` la función `update` devuelve `SIGNAL_DONE`, entonces hay que\npasar al estado `IDLE`.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdessaya%2Fcmd-uart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdessaya%2Fcmd-uart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdessaya%2Fcmd-uart/lists"}