Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: platform/mbed/main_nat.cpp
- Revision:
- 2:a2bea117e22e
- Parent:
- 1:28afb064a41c
- Child:
- 3:559c4bd38111
--- a/platform/mbed/main_nat.cpp Sun Mar 10 10:13:36 2013 +0000
+++ b/platform/mbed/main_nat.cpp Tue Mar 12 11:40:41 2013 +0000
@@ -4,7 +4,7 @@
* PyMite usr native function file
*
* automatically created by pmImgCreator.py
- * on Sun Mar 10 18:24:12 2013
+ * on Tue Mar 12 20:23:40 2013
*
* DO NOT EDIT THIS FILE.
* ANY CHANGES WILL BE LOST.
@@ -17,14 +17,7 @@
/* From: mbed.py */
#include "mbed.h"
-
-/* PinName lookup table. Converts pin number to PinName. */
-static PinName const pinNumToName[] = {
- NC, LED1, LED2, LED3, LED4, p5, p6, p7, p8, p9,
- p10, p11, p12, p13, p14, p15, p16, p17, p18, p19,
- p20, p21, p22, p23, p24, p25, p26, p27, p28, p29,
- p30
-};
+#include "NativeClassInterface.h"
PmReturn_t
nat_placeholder_func(pPmFrame_t *ppframe)
@@ -45,43 +38,8 @@
nat_01_mbed___init__(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- DigitalOut *dout;
- uint8_t objid;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Instantiate the C++ object */
- dout = new DigitalOut(pinNumToName[((pPmInt_t)pn)->val]);
-
- /* Save the pointer to adc as an inaccessible attribute */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = int_new((uint32_t)dout, &pn);
- PM_RETURN_IF_ERROR(retval);
- heap_gcPushTempRoot(pn, &objid);
- retval = dict_setItem(pattrs, PM_NONE, pn);
- heap_gcPopTempRoot(objid);
- PM_RETURN_IF_ERROR(retval);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.init<DigitalOut,PinName>(OBJ_TYPE_INT);
}
@@ -89,40 +47,8 @@
nat_02_mbed_write(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- DigitalOut *dout;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- dout = (DigitalOut *)((pPmInt_t)pn)->val;
-
- /* Write value to DAC */
- pn = NATIVE_GET_LOCAL(1);
- dout->write(((pPmInt_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<DigitalOut,int,&DigitalOut::write>(OBJ_TYPE_NON, OBJ_TYPE_INT);
}
@@ -130,33 +56,8 @@
nat_03_mbed_read(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- DigitalOut *dout;
- int32_t n;
-
- /* If wrong number of args, throw type exception */
- if (NATIVE_GET_NUM_ARGS() != 1)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- dout = (DigitalOut *)((pPmInt_t)pn)->val;
-
- /* Return input value on the stack */
- n = dout->read();
- retval = int_new(n, &pn);
- NATIVE_SET_TOS(pn);
-
- return retval;
+ NativeClassInterface nci;
+ return nci.method<int,DigitalOut,&DigitalOut::read>(OBJ_TYPE_INT);
}
@@ -164,43 +65,8 @@
nat_04_mbed___init__(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- DigitalIn *din;
- uint8_t objid;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Instantiate the C++ object */
- din = new DigitalIn(pinNumToName[((pPmInt_t)pn)->val]);
-
- /* Save the pointer to adc as an inaccessible attribute */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = int_new((uint32_t)din, &pn);
- PM_RETURN_IF_ERROR(retval);
- heap_gcPushTempRoot(pn, &objid);
- retval = dict_setItem(pattrs, PM_NONE, pn);
- heap_gcPopTempRoot(objid);
- PM_RETURN_IF_ERROR(retval);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.init<DigitalIn,PinName>(OBJ_TYPE_INT);
}
@@ -208,33 +74,8 @@
nat_05_mbed_read(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- DigitalIn *din;
- int32_t n;
-
- /* If wrong number of args, throw type exception */
- if (NATIVE_GET_NUM_ARGS() != 1)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- din = (DigitalIn *)((pPmInt_t)pn)->val;
-
- /* Return input value on the stack */
- n = din->read();
- retval = int_new(n, &pn);
- NATIVE_SET_TOS(pn);
-
- return retval;
+ NativeClassInterface nci;
+ return nci.method<int,DigitalIn,&DigitalIn::read>(OBJ_TYPE_INT);
}
@@ -242,1170 +83,400 @@
nat_06_mbed___init__(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- AnalogIn *adc;
- uint8_t objid;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.init<DigitalInOut,PinName>(OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Instantiate the C++ object */
- adc = new AnalogIn(pinNumToName[((pPmInt_t)pn)->val]);
+PmReturn_t
+nat_07_mbed_read(pPmFrame_t *ppframe)
+{
- /* Save the pointer to adc as an inaccessible attribute */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = int_new((uint32_t)adc, &pn);
- PM_RETURN_IF_ERROR(retval);
- heap_gcPushTempRoot(pn, &objid);
- retval = dict_setItem(pattrs, PM_NONE, pn);
- heap_gcPopTempRoot(objid);
- PM_RETURN_IF_ERROR(retval);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<int,DigitalInOut,&DigitalInOut::read>(OBJ_TYPE_INT);
}
PmReturn_t
-nat_07_mbed_read_u16(pPmFrame_t *ppframe)
+nat_08_mbed_write(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- AnalogIn *adc;
- int32_t n;
-
- /* If wrong number of args, throw type exception */
- if (NATIVE_GET_NUM_ARGS() != 1)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- adc = (AnalogIn *)((pPmInt_t)pn)->val;
-
- /* Return input value on the stack */
- n = adc->read_u16();
- retval = int_new(n, &pn);
- NATIVE_SET_TOS(pn);
-
- return retval;
+ NativeClassInterface nci;
+ return nci.method<DigitalInOut,int,&DigitalInOut::write>(OBJ_TYPE_NON, OBJ_TYPE_INT);
}
PmReturn_t
-nat_08_mbed_read(pPmFrame_t *ppframe)
+nat_09_mbed_input(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- AnalogIn *adc;
- float n;
+ NativeClassInterface nci;
+ return nci.method<DigitalInOut,&DigitalInOut::input>(OBJ_TYPE_NON);
+
+}
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 1)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+PmReturn_t
+nat_10_mbed_output(pPmFrame_t *ppframe)
+{
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- adc = (AnalogIn *)((pPmInt_t)pn)->val;
-
- /* Return input value on the stack */
- n = adc->read();
- retval = float_new(n, &pn);
- NATIVE_SET_TOS(pn);
-
- return retval;
+ NativeClassInterface nci;
+ return nci.method<DigitalInOut,&DigitalInOut::output>(OBJ_TYPE_NON);
}
PmReturn_t
-nat_09_mbed___init__(pPmFrame_t *ppframe)
+nat_11_mbed___init__(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- AnalogOut *dac;
- uint8_t objid;
-
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.init<AnalogIn,PinName>(OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Instantiate the object */
- dac = new AnalogOut(pinNumToName[((pPmInt_t)pn)->val]);
+PmReturn_t
+nat_12_mbed_read_u16(pPmFrame_t *ppframe)
+{
- /* Save the pointer to adc as an inaccessible attribute */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = int_new((uint32_t)dac, &pn);
- PM_RETURN_IF_ERROR(retval);
- heap_gcPushTempRoot(pn, &objid);
- retval = dict_setItem(pattrs, PM_NONE, pn);
- heap_gcPopTempRoot(objid);
- PM_RETURN_IF_ERROR(retval);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<uint16_t,AnalogIn,&AnalogIn::read_u16>(OBJ_TYPE_INT);
}
PmReturn_t
-nat_10_mbed_write_u16(pPmFrame_t *ppframe)
+nat_13_mbed_read(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- AnalogOut *dac;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- dac = (AnalogOut *)((pPmInt_t)pn)->val;
-
- /* Write value to DAC */
- pn = NATIVE_GET_LOCAL(1);
- dac->write_u16(((pPmInt_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<float,AnalogIn,&AnalogIn::read>(OBJ_TYPE_FLT);
}
PmReturn_t
-nat_11_mbed_write(pPmFrame_t *ppframe)
+nat_14_mbed___init__(pPmFrame_t *ppframe)
+{
+
+ NativeClassInterface nci;
+ return nci.init<AnalogOut,PinName>(OBJ_TYPE_INT);
+
+}
+
+PmReturn_t
+nat_15_mbed_write_u16(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- AnalogOut *dac;
- float n;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.method<AnalogOut,uint16_t,&AnalogOut::write_u16>(OBJ_TYPE_NON, OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_FLT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- dac = (AnalogOut *)((pPmInt_t)pn)->val;
+PmReturn_t
+nat_16_mbed_write(pPmFrame_t *ppframe)
+{
- /* Saturate and write value to DAC */
- pn = NATIVE_GET_LOCAL(1);
- n = ((pPmFloat_t)pn)->val;
- if (n < 0.0)
- {
- n = 0.0;
- }
- else if (n > 1.0)
- {
- n = 1.0;
- }
- dac->write(n);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<AnalogOut,float,&AnalogOut::write>(OBJ_TYPE_NON, OBJ_TYPE_FLT);
}
PmReturn_t
-nat_12_mbed_read(pPmFrame_t *ppframe)
+nat_17_mbed_read(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- AnalogOut *dac;
- float n;
+ NativeClassInterface nci;
+ return nci.method<float,AnalogOut,&AnalogOut::read>(OBJ_TYPE_FLT);
+
+}
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 1)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+PmReturn_t
+nat_18_mbed___init__(pPmFrame_t *ppframe)
+{
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- dac = (AnalogOut *)((pPmInt_t)pn)->val;
-
- /* Return output value on the stack */
- n = dac->read();
- retval = float_new(n, &pn);
- NATIVE_SET_TOS(pn);
-
- return retval;
+ NativeClassInterface nci;
+ return nci.init<PwmOut,PinName>(OBJ_TYPE_INT);
}
PmReturn_t
-nat_13_mbed___init__(pPmFrame_t *ppframe)
+nat_19_mbed_write(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- PwmOut *pwm;
- uint8_t objid;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Instantiate the C++ object */
- pwm = new PwmOut(pinNumToName[((pPmInt_t)pn)->val]);
-
- /* Save the pointer to pwm as an inaccessible attribute */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = int_new((uint32_t)pwm, &pn);
- PM_RETURN_IF_ERROR(retval);
- heap_gcPushTempRoot(pn, &objid);
- retval = dict_setItem(pattrs, PM_NONE, pn);
- heap_gcPopTempRoot(objid);
- PM_RETURN_IF_ERROR(retval);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<PwmOut,float,&PwmOut::write>(OBJ_TYPE_NON, OBJ_TYPE_FLT);
}
PmReturn_t
-nat_14_mbed_write(pPmFrame_t *ppframe)
+nat_20_mbed_read(pPmFrame_t *ppframe)
{
- PmReturn_t retval = PM_RET_OK;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pPmObj_t pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pPmObj_t pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_FLT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pPmObj_t pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- PwmOut* pwm = (PwmOut *)((pPmInt_t)pn)->val;
-
- pn = NATIVE_GET_LOCAL(1);
- float n = ((pPmFloat_t)pn)->val;
- pwm->write(n);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<float,PwmOut,&PwmOut::read>(OBJ_TYPE_FLT);
}
PmReturn_t
-nat_15_mbed_read(pPmFrame_t *ppframe)
+nat_21_mbed_period(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- DigitalOut *dout;
- int32_t n;
-
- /* If wrong number of args, throw type exception */
- if (NATIVE_GET_NUM_ARGS() != 1)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- dout = (DigitalOut *)((pPmInt_t)pn)->val;
-
- /* Return input value on the stack */
- n = dout->read();
- retval = int_new(n, &pn);
- NATIVE_SET_TOS(pn);
-
- return retval;
+ NativeClassInterface nci;
+ return nci.method<PwmOut,float,&PwmOut::period>(OBJ_TYPE_NON, OBJ_TYPE_FLT);
}
PmReturn_t
-nat_16_mbed_period(pPmFrame_t *ppframe)
+nat_22_mbed_period_ms(pPmFrame_t *ppframe)
{
- PmReturn_t retval = PM_RET_OK;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pPmObj_t pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pPmObj_t pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_FLT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pPmObj_t pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- PwmOut* pwm = (PwmOut *)((pPmInt_t)pn)->val;
-
- pn = NATIVE_GET_LOCAL(1);
- pwm->period(((pPmFloat_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<PwmOut,int,&PwmOut::period_ms>(OBJ_TYPE_NON, OBJ_TYPE_INT);
}
PmReturn_t
-nat_17_mbed_period_ms(pPmFrame_t *ppframe)
+nat_23_mbed_period_us(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- PwmOut *pwm;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- pwm = (PwmOut *)((pPmInt_t)pn)->val;
-
- pn = NATIVE_GET_LOCAL(1);
- pwm->period_ms(((pPmInt_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<PwmOut,int,&PwmOut::period_us>(OBJ_TYPE_NON, OBJ_TYPE_INT);
}
PmReturn_t
-nat_18_mbed_period_us(pPmFrame_t *ppframe)
+nat_24_mbed_pulsewidth(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- PwmOut *pwm;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- pwm = (PwmOut *)((pPmInt_t)pn)->val;
-
- pn = NATIVE_GET_LOCAL(1);
- pwm->period_us(((pPmInt_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<PwmOut,float,&PwmOut::pulsewidth>(OBJ_TYPE_NON, OBJ_TYPE_FLT);
}
PmReturn_t
-nat_19_mbed_pulsewidth(pPmFrame_t *ppframe)
+nat_25_mbed_pulsewidth_ms(pPmFrame_t *ppframe)
+{
+
+ NativeClassInterface nci;
+ return nci.method<PwmOut,int,&PwmOut::pulsewidth_ms>(OBJ_TYPE_NON, OBJ_TYPE_INT);
+
+}
+
+PmReturn_t
+nat_26_mbed_pulsewidth_us(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.method<PwmOut,int,&PwmOut::pulsewidth_us>(OBJ_TYPE_NON, OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_FLT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
+PmReturn_t
+nat_27_mbed___init__(pPmFrame_t *ppframe)
+{
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- PwmOut* pwm = (PwmOut *)((pPmInt_t)pn)->val;
-
- pn = NATIVE_GET_LOCAL(1);
- pwm->pulsewidth(((pPmFloat_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.init<Serial,PinName,PinName>(OBJ_TYPE_INT, OBJ_TYPE_INT);
}
PmReturn_t
-nat_20_mbed_puslewidth_ms(pPmFrame_t *ppframe)
+nat_28_mbed_baud(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- PwmOut *pwm;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.method<Serial,int,&Serial::baud>(OBJ_TYPE_NON, OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
+PmReturn_t
+nat_29_mbed_readable(pPmFrame_t *ppframe)
+{
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- pwm = (PwmOut *)((pPmInt_t)pn)->val;
-
- /* Write value to DAC */
- pn = NATIVE_GET_LOCAL(1);
- pwm->pulsewidth_ms(((pPmInt_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<int,Serial,&Serial::readable>(OBJ_TYPE_INT);
}
PmReturn_t
-nat_21_mbed_pulsewidth_us(pPmFrame_t *ppframe)
+nat_30_mbed_writeable(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- PwmOut *pwm;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- pwm = (PwmOut *)((pPmInt_t)pn)->val;
-
- pn = NATIVE_GET_LOCAL(1);
- pwm->pulsewidth_us(((pPmInt_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<int,Serial,&Serial::writeable>(OBJ_TYPE_INT);
}
PmReturn_t
-nat_22_mbed___init__(pPmFrame_t *ppframe)
+nat_31_mbed_putc(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t ptx;
- pPmObj_t prx;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- Serial *ser;
- uint8_t objid;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 3)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- ptx = NATIVE_GET_LOCAL(1);
- prx = NATIVE_GET_LOCAL(2);
- if ((OBJ_GET_TYPE(ptx) != OBJ_TYPE_INT)
- || (OBJ_GET_TYPE(prx) != OBJ_TYPE_INT))
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Instantiate the C++ object */
- ser = new Serial(pinNumToName[((pPmInt_t)ptx)->val],
- pinNumToName[((pPmInt_t)prx)->val]);
-
- /* Save the pointer to ser as an inaccessible attribute */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = int_new((uint32_t)ser, &pn);
- PM_RETURN_IF_ERROR(retval);
- heap_gcPushTempRoot(pn, &objid);
- retval = dict_setItem(pattrs, PM_NONE, pn);
- heap_gcPopTempRoot(objid);
- PM_RETURN_IF_ERROR(retval);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ Serial* obj;
+ nci._load_obj<Serial>(&obj);
+ int r = obj->putc(nci.argv<int>(1));
+ return nci.set_return_value<int>(OBJ_TYPE_INT, r);
+ //return nci.method<int,Serial,int,&Serial::putc>(OBJ_TYPE_INT, OBJ_TYPE_STR);
}
PmReturn_t
-nat_23_mbed_putc(pPmFrame_t *ppframe)
+nat_32_mbed_puts(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- Serial *ser;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_STR)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- ser = (Serial *)((pPmInt_t)pn)->val;
-
- /* Write value to DAC */
- pn = NATIVE_GET_LOCAL(1);
- ser->putc(((pPmString_t)pn)->val[0]);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
-
-}
-
-PmReturn_t
-nat_24_mbed_puts(pPmFrame_t *ppframe)
-{
-
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- Serial *ser;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- pn = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pn) != OBJ_TYPE_STR)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- ser = (Serial *)((pPmInt_t)pn)->val;
-
- /* Write value to DAC */
- pn = NATIVE_GET_LOCAL(1);
- ser->puts((const char *)((pPmString_t)pn)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ Serial* obj;
+ nci._load_obj<Serial>(&obj);
+ int r = obj->puts(nci.argv<const char*>(1));
+ return nci.set_return_value<int>(OBJ_TYPE_INT, r);
+ //return nci.method<int,Serial,char*,&Serial::puts>(OBJ_TYPE_INT, OBJ_TYPE_STR);
}
PmReturn_t
-nat_25_mbed_getc(pPmFrame_t *ppframe)
+nat_33_mbed_getc(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- Serial *ser;
- int32_t n;
-
- /* If wrong number of args, throw type exception */
- if (NATIVE_GET_NUM_ARGS() != 1)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- ser = (Serial *)((pPmInt_t)pn)->val;
-
- /* Return char (as string) on the stack */
- n = ser->getc();
- retval = string_newFromChar((uint8_t)n, &pn);
- NATIVE_SET_TOS(pn);
-
- return retval;
+ NativeClassInterface nci;
+ Serial* obj;
+ nci._load_obj<Serial>(&obj);
+ int r = obj->getc();
+ return nci.set_return_value<int>(OBJ_TYPE_STR, r);
+ //return nci.method<int,Serial,&Serial::getc>(OBJ_TYPE_STR);
}
PmReturn_t
-nat_26_mbed___init__(pPmFrame_t *ppframe)
+nat_34_mbed___init__(pPmFrame_t *ppframe)
+{
+
+ NativeClassInterface nci;
+ return nci.init<SPI,PinName,PinName,PinName>(OBJ_TYPE_INT, OBJ_TYPE_INT, OBJ_TYPE_INT);
+
+}
+
+PmReturn_t
+nat_35_mbed_format(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pmosi;
- pPmObj_t pmiso;
- pPmObj_t psclk;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- SPI *spi;
- uint8_t objid;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 4)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.method<SPI,int,int,&SPI::format>(OBJ_TYPE_NON, OBJ_TYPE_INT, OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- pmosi = NATIVE_GET_LOCAL(1);
- pmiso = NATIVE_GET_LOCAL(2);
- psclk = NATIVE_GET_LOCAL(3);
- if ((OBJ_GET_TYPE(pmosi) != OBJ_TYPE_INT)
- || (OBJ_GET_TYPE(pmiso) != OBJ_TYPE_INT)
- || (OBJ_GET_TYPE(psclk) != OBJ_TYPE_INT))
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
+PmReturn_t
+nat_36_mbed_frequency(pPmFrame_t *ppframe)
+{
- /* Instantiate the C++ object */
- spi = new SPI(pinNumToName[((pPmInt_t)pmosi)->val],
- pinNumToName[((pPmInt_t)pmiso)->val],
- pinNumToName[((pPmInt_t)psclk)->val]);
-
- /* Save the pointer to ser as an inaccessible attribute */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = int_new((uint32_t)spi, &pn);
- PM_RETURN_IF_ERROR(retval);
- heap_gcPushTempRoot(pn, &objid);
- retval = dict_setItem(pattrs, PM_NONE, pn);
- heap_gcPopTempRoot(objid);
- PM_RETURN_IF_ERROR(retval);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<SPI,int,&SPI::frequency>(OBJ_TYPE_NON, OBJ_TYPE_INT);
}
PmReturn_t
-nat_27_mbed_format(pPmFrame_t *ppframe)
+nat_37_mbed_write(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pbits;
- pPmObj_t pmode;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- SPI *spi;
-
- /* Raise TypeError if wrong number of args */
- if ((NATIVE_GET_NUM_ARGS() < 2) || (NATIVE_GET_NUM_ARGS() > 3))
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.method<int,SPI,int,&SPI::write>(OBJ_TYPE_INT, OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- pbits = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pbits) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
+PmReturn_t
+nat_38_mbed___init__(pPmFrame_t *ppframe)
+{
- /* Get the mode arg if it exists */
- pmode = PM_ZERO;
- if (NATIVE_GET_NUM_ARGS() == 3)
- {
- pmode = NATIVE_GET_LOCAL(3);
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- spi = (SPI *)((pPmInt_t)pn)->val;
-
- /* Set format args */
- spi->format(((pPmInt_t)pbits)->val, ((pPmInt_t)pmode)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.init<I2C,PinName,PinName>(OBJ_TYPE_INT, OBJ_TYPE_INT);
}
PmReturn_t
-nat_28_mbed_frequency(pPmFrame_t *ppframe)
+nat_39_mbed_frequency(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t phz;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- SPI *spi;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- phz = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(phz) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- spi = (SPI *)((pPmInt_t)pn)->val;
-
- /* Set frequency */
- spi->frequency(((pPmInt_t)phz)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<I2C,int,&I2C::frequency>(OBJ_TYPE_NON, OBJ_TYPE_INT);
}
PmReturn_t
-nat_29_mbed_write(pPmFrame_t *ppframe)
+nat_40_mbed_read(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t pv;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- SPI *spi;
- int32_t r;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.method<int,I2C,int,char*,int,bool,&I2C::read>(OBJ_TYPE_INT,
+ OBJ_TYPE_INT, OBJ_TYPE_STR, OBJ_TYPE_INT, OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- pv = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(pv) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
+PmReturn_t
+nat_41_mbed_write(pPmFrame_t *ppframe)
+{
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- spi = (SPI *)((pPmInt_t)pn)->val;
-
- /* Write the value and return the response */
- r = spi->write(((pPmInt_t)pv)->val);
- retval = int_new(r, &pn);
- NATIVE_SET_TOS(pn);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<int,I2C,int,const char*,int,bool,&I2C::write>(OBJ_TYPE_INT,
+ OBJ_TYPE_INT, OBJ_TYPE_STR, OBJ_TYPE_INT, OBJ_TYPE_INT);
}
PmReturn_t
-nat_30_mbed___init__(pPmFrame_t *ppframe)
+nat_42_mbed___init__(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t psda;
- pPmObj_t pscl;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- I2C *i2c;
- uint8_t objid;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 3)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- psda = NATIVE_GET_LOCAL(1);
- pscl = NATIVE_GET_LOCAL(2);
- if ((OBJ_GET_TYPE(psda) != OBJ_TYPE_INT)
- || (OBJ_GET_TYPE(pscl) != OBJ_TYPE_INT))
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Instantiate the C++ object */
- i2c = new I2C(pinNumToName[((pPmInt_t)psda)->val],
- pinNumToName[((pPmInt_t)pscl)->val]);
-
- /* Save the pointer to ser as an inaccessible attribute */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = int_new((uint32_t)i2c, &pn);
- PM_RETURN_IF_ERROR(retval);
- heap_gcPushTempRoot(pn, &objid);
- retval = dict_setItem(pattrs, PM_NONE, pn);
- heap_gcPopTempRoot(objid);
- PM_RETURN_IF_ERROR(retval);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.init<Timer>();
}
PmReturn_t
-nat_31_mbed_frequency(pPmFrame_t *ppframe)
+nat_43_mbed_start(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t phz;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- I2C *i2c;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 2)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.method<Timer,&Timer::start>(OBJ_TYPE_NON);
+
+}
- /* Raise TypeError if arg is not the right type */
- phz = NATIVE_GET_LOCAL(1);
- if (OBJ_GET_TYPE(phz) != OBJ_TYPE_INT)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
+PmReturn_t
+nat_44_mbed_stop(pPmFrame_t *ppframe)
+{
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- i2c = (I2C *)((pPmInt_t)pn)->val;
-
- /* Set frequency */
- i2c->frequency(((pPmInt_t)phz)->val);
-
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<Timer,&Timer::stop>(OBJ_TYPE_NON);
}
PmReturn_t
-nat_32_mbed_read(pPmFrame_t *ppframe)
+nat_45_mbed_reset(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t paddr;
- pPmObj_t pdata;
- pPmObj_t plen;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- I2C *i2c;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 4)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
-
- /* Raise TypeError if arg is not the right type */
- paddr = NATIVE_GET_LOCAL(1);
- pdata = NATIVE_GET_LOCAL(2);
- plen = NATIVE_GET_LOCAL(3);
- if ((OBJ_GET_TYPE(paddr) != OBJ_TYPE_INT)
- || (OBJ_GET_TYPE(pdata) != OBJ_TYPE_STR)
- || (OBJ_GET_TYPE(plen) != OBJ_TYPE_INT))
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
-
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- i2c = (I2C *)((pPmInt_t)pn)->val;
-
- /* Read the bytes into the string */
- /* WARNING: Changing the bytes of a string object is BAD. */
- i2c->read(((pPmInt_t)paddr)->val,
- (char *)((pPmString_t)pdata)->val,
- ((pPmInt_t)plen)->val);
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<Timer,&Timer::reset>(OBJ_TYPE_NON);
}
PmReturn_t
-nat_33_mbed_write(pPmFrame_t *ppframe)
+nat_46_mbed_read(pPmFrame_t *ppframe)
+{
+
+ NativeClassInterface nci;
+ return nci.method<float,Timer,&Timer::read>(OBJ_TYPE_FLT);
+
+}
+
+PmReturn_t
+nat_47_mbed_read_ms(pPmFrame_t *ppframe)
{
- pPmObj_t pself;
- pPmObj_t pn;
- pPmObj_t paddr;
- pPmObj_t pdata;
- pPmObj_t plen;
- pPmObj_t pattrs;
- PmReturn_t retval = PM_RET_OK;
- I2C *i2c;
-
- /* Raise TypeError if wrong number of args */
- if (NATIVE_GET_NUM_ARGS() != 4)
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
- pself = NATIVE_GET_LOCAL(0);
+ NativeClassInterface nci;
+ return nci.method<int,Timer,&Timer::read_ms>(OBJ_TYPE_INT);
+
+}
- /* Raise TypeError if arg is not the right type */
- paddr = NATIVE_GET_LOCAL(1);
- pdata = NATIVE_GET_LOCAL(2);
- plen = NATIVE_GET_LOCAL(3);
- if ((OBJ_GET_TYPE(paddr) != OBJ_TYPE_INT)
- || (OBJ_GET_TYPE(pdata) != OBJ_TYPE_STR)
- || (OBJ_GET_TYPE(plen) != OBJ_TYPE_INT))
- {
- PM_RAISE(retval, PM_RET_EX_TYPE);
- return retval;
- }
+PmReturn_t
+nat_48_mbed_read_us(pPmFrame_t *ppframe)
+{
- /* Get the the C++ instance */
- pattrs = (pPmObj_t)((pPmInstance_t)pself)->cli_attrs;
- retval = dict_getItem(pattrs, PM_NONE, &pn);
- PM_RETURN_IF_ERROR(retval);
- i2c = (I2C *)((pPmInt_t)pn)->val;
-
- /* Write the value and return the response */
- i2c->write(((pPmInt_t)paddr)->val,
- (char *)((pPmString_t)pdata)->val,
- ((pPmInt_t)plen)->val);
- NATIVE_SET_TOS(PM_NONE);
- return retval;
+ NativeClassInterface nci;
+ return nci.method<int,Timer,&Timer::read_us>(OBJ_TYPE_INT);
}
@@ -1419,31 +490,46 @@
nat_04_mbed___init__,
nat_05_mbed_read,
nat_06_mbed___init__,
- nat_07_mbed_read_u16,
- nat_08_mbed_read,
- nat_09_mbed___init__,
- nat_10_mbed_write_u16,
- nat_11_mbed_write,
- nat_12_mbed_read,
- nat_13_mbed___init__,
- nat_14_mbed_write,
- nat_15_mbed_read,
- nat_16_mbed_period,
- nat_17_mbed_period_ms,
- nat_18_mbed_period_us,
- nat_19_mbed_pulsewidth,
- nat_20_mbed_puslewidth_ms,
- nat_21_mbed_pulsewidth_us,
- nat_22_mbed___init__,
- nat_23_mbed_putc,
- nat_24_mbed_puts,
- nat_25_mbed_getc,
- nat_26_mbed___init__,
- nat_27_mbed_format,
- nat_28_mbed_frequency,
- nat_29_mbed_write,
- nat_30_mbed___init__,
- nat_31_mbed_frequency,
- nat_32_mbed_read,
- nat_33_mbed_write,
+ nat_07_mbed_read,
+ nat_08_mbed_write,
+ nat_09_mbed_input,
+ nat_10_mbed_output,
+ nat_11_mbed___init__,
+ nat_12_mbed_read_u16,
+ nat_13_mbed_read,
+ nat_14_mbed___init__,
+ nat_15_mbed_write_u16,
+ nat_16_mbed_write,
+ nat_17_mbed_read,
+ nat_18_mbed___init__,
+ nat_19_mbed_write,
+ nat_20_mbed_read,
+ nat_21_mbed_period,
+ nat_22_mbed_period_ms,
+ nat_23_mbed_period_us,
+ nat_24_mbed_pulsewidth,
+ nat_25_mbed_pulsewidth_ms,
+ nat_26_mbed_pulsewidth_us,
+ nat_27_mbed___init__,
+ nat_28_mbed_baud,
+ nat_29_mbed_readable,
+ nat_30_mbed_writeable,
+ nat_31_mbed_putc,
+ nat_32_mbed_puts,
+ nat_33_mbed_getc,
+ nat_34_mbed___init__,
+ nat_35_mbed_format,
+ nat_36_mbed_frequency,
+ nat_37_mbed_write,
+ nat_38_mbed___init__,
+ nat_39_mbed_frequency,
+ nat_40_mbed_read,
+ nat_41_mbed_write,
+ nat_42_mbed___init__,
+ nat_43_mbed_start,
+ nat_44_mbed_stop,
+ nat_45_mbed_reset,
+ nat_46_mbed_read,
+ nat_47_mbed_read_ms,
+ nat_48_mbed_read_us,
};