The Squirrel interpreter for FRDM-K64F, extended with a set of classes that provide access to the mbed functionality (currently DigitalIn, DigitalInOut, DigitalOut, InterruptIn, PwmOut, Ticker, Timeout, Timer).

Dependencies:   SQUIRREL3 mbed sqbind-0_99

The Squirrel interpreter for FRDM-K64F.

NOTE: Currently of POC quality.

See http://www.squirrel-lang.org/ for information about the Squirrel language.

Currently the following (a subset of their functionality) mbed classes are available from within Squirrel:

  • DigitalIn
  • DigitalOut
  • DigitalInOut
  • PwmOut
  • Ticker
  • Timeout
  • Timer

In addition, InterruptIn is supported, but interrupts are noted when they occur, but only delivered from the main loop of the interpreter.

See also README.txt in the root of the project.

Committer:
jhnwkmn
Date:
Tue Dec 16 13:12:34 2014 +0000
Revision:
1:540008bb92a2
Parent:
0:6f55c7651ccc
Updated license.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jhnwkmn 0:6f55c7651ccc 1 /*
jhnwkmn 1:540008bb92a2 2 Copyright 2014 Johan Wikman
jhnwkmn 1:540008bb92a2 3
jhnwkmn 1:540008bb92a2 4 Licensed under the Apache License, Version 2.0 (the "License");
jhnwkmn 1:540008bb92a2 5 you may not use this file except in compliance with the License.
jhnwkmn 1:540008bb92a2 6 You may obtain a copy of the License at
jhnwkmn 1:540008bb92a2 7
jhnwkmn 1:540008bb92a2 8 http://www.apache.org/licenses/LICENSE-2.0
jhnwkmn 1:540008bb92a2 9
jhnwkmn 1:540008bb92a2 10 Unless required by applicable law or agreed to in writing, software
jhnwkmn 1:540008bb92a2 11 distributed under the License is distributed on an "AS IS" BASIS,
jhnwkmn 1:540008bb92a2 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
jhnwkmn 1:540008bb92a2 13 See the License for the specific language governing permissions and
jhnwkmn 1:540008bb92a2 14 limitations under the License.
jhnwkmn 0:6f55c7651ccc 15 */
jhnwkmn 0:6f55c7651ccc 16
jhnwkmn 0:6f55c7651ccc 17 #include <sqmbed/pwmout.h>
jhnwkmn 0:6f55c7651ccc 18
jhnwkmn 0:6f55c7651ccc 19 namespace SqMbed
jhnwkmn 0:6f55c7651ccc 20 {
jhnwkmn 0:6f55c7651ccc 21
jhnwkmn 0:6f55c7651ccc 22 PwmOut::PwmOut(PinName pin)
jhnwkmn 0:6f55c7651ccc 23 : m_pwmOut(pin)
jhnwkmn 0:6f55c7651ccc 24 {
jhnwkmn 0:6f55c7651ccc 25 }
jhnwkmn 0:6f55c7651ccc 26
jhnwkmn 0:6f55c7651ccc 27 PwmOut::~PwmOut()
jhnwkmn 0:6f55c7651ccc 28 {
jhnwkmn 0:6f55c7651ccc 29 }
jhnwkmn 0:6f55c7651ccc 30
jhnwkmn 0:6f55c7651ccc 31 void PwmOut::write(float value)
jhnwkmn 0:6f55c7651ccc 32 {
jhnwkmn 0:6f55c7651ccc 33 m_pwmOut.write(value);
jhnwkmn 0:6f55c7651ccc 34 }
jhnwkmn 0:6f55c7651ccc 35
jhnwkmn 0:6f55c7651ccc 36 float PwmOut::read() const
jhnwkmn 0:6f55c7651ccc 37 {
jhnwkmn 0:6f55c7651ccc 38 return m_pwmOut.read();
jhnwkmn 0:6f55c7651ccc 39 }
jhnwkmn 0:6f55c7651ccc 40
jhnwkmn 0:6f55c7651ccc 41 void PwmOut::period(float seconds)
jhnwkmn 0:6f55c7651ccc 42 {
jhnwkmn 0:6f55c7651ccc 43 m_pwmOut.period(seconds);
jhnwkmn 0:6f55c7651ccc 44 }
jhnwkmn 0:6f55c7651ccc 45
jhnwkmn 0:6f55c7651ccc 46 void PwmOut::period_ms(int ms)
jhnwkmn 0:6f55c7651ccc 47 {
jhnwkmn 0:6f55c7651ccc 48 m_pwmOut.period_ms(ms);
jhnwkmn 0:6f55c7651ccc 49 }
jhnwkmn 0:6f55c7651ccc 50
jhnwkmn 0:6f55c7651ccc 51 void PwmOut::period_us(int us)
jhnwkmn 0:6f55c7651ccc 52 {
jhnwkmn 0:6f55c7651ccc 53 m_pwmOut.period_us(us);
jhnwkmn 0:6f55c7651ccc 54 }
jhnwkmn 0:6f55c7651ccc 55
jhnwkmn 0:6f55c7651ccc 56 void PwmOut::pulsewidth(float seconds)
jhnwkmn 0:6f55c7651ccc 57 {
jhnwkmn 0:6f55c7651ccc 58 m_pwmOut.pulsewidth(seconds);
jhnwkmn 0:6f55c7651ccc 59 }
jhnwkmn 0:6f55c7651ccc 60
jhnwkmn 0:6f55c7651ccc 61 void PwmOut::pulsewidth_ms(int ms)
jhnwkmn 0:6f55c7651ccc 62 {
jhnwkmn 0:6f55c7651ccc 63 m_pwmOut.pulsewidth_ms(ms);
jhnwkmn 0:6f55c7651ccc 64 }
jhnwkmn 0:6f55c7651ccc 65
jhnwkmn 0:6f55c7651ccc 66 void PwmOut::pulsewidth_us(int us)
jhnwkmn 0:6f55c7651ccc 67 {
jhnwkmn 0:6f55c7651ccc 68 m_pwmOut.pulsewidth_us(us);
jhnwkmn 0:6f55c7651ccc 69 }
jhnwkmn 0:6f55c7651ccc 70
jhnwkmn 0:6f55c7651ccc 71 // static
jhnwkmn 0:6f55c7651ccc 72 void PwmOut::bind(HSQUIRRELVM vm)
jhnwkmn 0:6f55c7651ccc 73 {
jhnwkmn 0:6f55c7651ccc 74 SqBind<PwmOut>::init(vm, _SC("PwmOut"));
jhnwkmn 0:6f55c7651ccc 75 SqBind<PwmOut>::set_custom_constructor(&PwmOut::constructor);
jhnwkmn 0:6f55c7651ccc 76 sqbind_method(vm, "write", &PwmOut::write);
jhnwkmn 0:6f55c7651ccc 77 sqbind_method(vm, "read", &PwmOut::read);
jhnwkmn 0:6f55c7651ccc 78 sqbind_method(vm, "period", &PwmOut::period);
jhnwkmn 0:6f55c7651ccc 79 sqbind_method(vm, "period_ms", &PwmOut::period_ms);
jhnwkmn 0:6f55c7651ccc 80 sqbind_method(vm, "period_us", &PwmOut::period_us);
jhnwkmn 0:6f55c7651ccc 81 sqbind_method(vm, "pulsewidth", &PwmOut::pulsewidth);
jhnwkmn 0:6f55c7651ccc 82 sqbind_method(vm, "pulsewidth_ms", &PwmOut::pulsewidth_ms);
jhnwkmn 0:6f55c7651ccc 83 sqbind_method(vm, "pulsewidth_us", &PwmOut::pulsewidth_us);
jhnwkmn 0:6f55c7651ccc 84 }
jhnwkmn 0:6f55c7651ccc 85
jhnwkmn 0:6f55c7651ccc 86 // static
jhnwkmn 0:6f55c7651ccc 87 PwmOut* PwmOut::constructor(HSQUIRRELVM vm)
jhnwkmn 0:6f55c7651ccc 88 {
jhnwkmn 0:6f55c7651ccc 89 PwmOut* pThis = 0;
jhnwkmn 0:6f55c7651ccc 90
jhnwkmn 0:6f55c7651ccc 91 int nParams = sq_gettop(vm);
jhnwkmn 0:6f55c7651ccc 92
jhnwkmn 0:6f55c7651ccc 93 if (nParams == 2) { // Need 1 (sic) params.
jhnwkmn 0:6f55c7651ccc 94 SQInteger i;
jhnwkmn 0:6f55c7651ccc 95
jhnwkmn 0:6f55c7651ccc 96 if (!SQ_FAILED(sq_getinteger(vm, 2, &i))) {
jhnwkmn 0:6f55c7651ccc 97 pThis = new PwmOut(static_cast<PinName>(i));
jhnwkmn 0:6f55c7651ccc 98 } else {
jhnwkmn 0:6f55c7651ccc 99 printf("error: Could not get PinName.");
jhnwkmn 0:6f55c7651ccc 100 }
jhnwkmn 0:6f55c7651ccc 101 } else {
jhnwkmn 0:6f55c7651ccc 102 printf("error: nParams != 2\n");
jhnwkmn 0:6f55c7651ccc 103 }
jhnwkmn 0:6f55c7651ccc 104
jhnwkmn 0:6f55c7651ccc 105 return pThis;
jhnwkmn 0:6f55c7651ccc 106 }
jhnwkmn 0:6f55c7651ccc 107
jhnwkmn 0:6f55c7651ccc 108 }