From 815388c65f811518a388d7dc1c65ee05fdafb36d Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 8 Jun 2016 01:19:07 +0100 Subject: [PATCH] wiringpi: initial skeleton --- wiringpi/Makefile | 7 +++ wiringpi/chiark_tcl_wiringpi.h | 26 +++++++++++ wiringpi/wiringpi.c | 57 +++++++++++++++++++++++ wiringpi/wiringpi.tct | 82 ++++++++++++++++++++++++++++++++++ 4 files changed, 172 insertions(+) create mode 100644 wiringpi/Makefile create mode 100644 wiringpi/chiark_tcl_wiringpi.h create mode 100644 wiringpi/wiringpi.c create mode 100644 wiringpi/wiringpi.tct diff --git a/wiringpi/Makefile b/wiringpi/Makefile new file mode 100644 index 0000000..1862054 --- /dev/null +++ b/wiringpi/Makefile @@ -0,0 +1,7 @@ +BASE_DIR = ../base +EXTBASE = wiringpi +CFILES = wiringpi +LDLIBS += -lwiringPi + +include ../base/extension.make + diff --git a/wiringpi/chiark_tcl_wiringpi.h b/wiringpi/chiark_tcl_wiringpi.h new file mode 100644 index 0000000..89d849d --- /dev/null +++ b/wiringpi/chiark_tcl_wiringpi.h @@ -0,0 +1,26 @@ +/* + * wiringPi binding for Tcl + * Copyright 2016 Ian Jackson + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this library; if not, see . + */ + +#ifndef WIRINGPITCL_H +#define WIRINGPITCL_H + +#include "chiark-tcl.h" + +#include "wiringpi+tcmdif.h" + +#endif /*WIRINGPITCL_H*/ diff --git a/wiringpi/wiringpi.c b/wiringpi/wiringpi.c new file mode 100644 index 0000000..e71cb53 --- /dev/null +++ b/wiringpi/wiringpi.c @@ -0,0 +1,57 @@ +/* + * wiringpi setup [MODE] + * MODE is one of -g -1 -p, as for gpio(1) + * optional, if not called is equivalent to saying just "setup" + * may not be called after any other wiringpi use in whole program + * there is no way to un-setup + * + * Most of the rest are very similar to gpio(1): + * boardRev => integer (see wiringPi.h) + * boardId => [list MODEL REV MEM MAKER OVERVOLTED] + * mode PIN MODE + * MODEs are + * in out pwm pwmTone clock up down tri off + * alt0 alt1 alt2 alt3 alt4 alt5 + * read PIN => 0|1 + * write PIN 0|1 + * aread PIN => VAL + * write PIN VAL + * pwm PIN VAL + * clock PIN FREQ + * drive GROUP VALUE + * pwm-bal|pwm-ms PIN + * pwmr PIN RANGE + * pwmc PIN CLOCK + * pwmTone PIN FREQ + */ +/* ---8<--- end of documentation comment --8<-- */ + +/* + * wiringpi.c - wiringPi binding for Tcl + * Copyright 2016 Ian Jackson + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this library; if not, see . + */ + +#define _GNU_SOURCE + +#include + +#include "chiark_tcl_wiringpi.h" + +/*---------- important types and forward declarations ----------*/ + +/*---------- main hooks for tcl ----------*/ + +CHT_INIT(wiringpi, {}, CHTI_COMMANDS(cht_wiringpitoplevel_entries)) diff --git a/wiringpi/wiringpi.tct b/wiringpi/wiringpi.tct new file mode 100644 index 0000000..7aadecb --- /dev/null +++ b/wiringpi/wiringpi.tct @@ -0,0 +1,82 @@ +# wiringpi binding for Tcl +# Copyright 2006-2012 Ian Jackson +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this library; if not, see . + + +Table *wiringpitoplevel TopLevel_Command + gpio + dispatch(WiringPiTcl/_SubCommand, "wiringpi subcommand") + +Table wiringpitcl WiringPiTcl_SubCommand + setup + ... obj + boardRev + => int + boardId + => obj + mode + pin int + mode enum(WiringPiTcl_Mode/, "wiringpi pin mode") + read + pin int + => int + write + pin int + val int + aread + pin int + => int + awrite + pin int + val int + pwm + pin int + val int + clock + pin int + freq int + drive + group int + value int + pwm-bal + pin int + pwm-ms + pin int + pwmTone + pin int + val int + pwmr + pin int + val int + pwmc + pin int + clk int + +Table wiringpitcl_mode WiringPiTcl_Mode + in + out + pwm + pwmTone + clock + up + down + tri + off + alt0 + alt1 + alt2 + alt3 + alt4 + alt5 -- 2.30.2