<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPCXpresso IDEのトピックRe: Embedding a scripting engine ?</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544902#M8952</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArneB on Mon May 14 02:05:37 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Thibaut,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if you are using FreeRTOS you can use CLI for free: &lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://"&gt;http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_CLI/FreeRTOS_Plus_Command_Line_Interface.shtml&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 00:31:20 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T00:31:20Z</dc:date>
    <item>
      <title>Embedding a scripting engine ?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544900#M8950</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Leji on Mon May 14 01:35:30 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would like to embed some level of scripting functionality in my application to allow users some simple/fast customizations (for example, toggle a GPIO each time an I2C transaction is detected, or repeat a pattern of GPIOs toggling...)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't need a fully featured language, just something with IF, FOR and&amp;nbsp; the ability to call native functions (for I2C, SPI etc...)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The only valid candidate I found until now is &lt;/SPAN&gt;&lt;A href="http://"&gt;http://www.compuphase.com/pawn/pawn.htm&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;Did anyone use it on an LPC ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is anyone using something else ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for any suggestions,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thibaut&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:31:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544900#M8950</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:31:18Z</dc:date>
    </item>
    <item>
      <title>Re: Embedding a scripting engine ?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544901#M8951</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by TheFallGuy on Mon May 14 02:03:03 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Did you look at picoc?&lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://"&gt;http://code.google.com/p/picoc/&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:31:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544901#M8951</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:31:19Z</dc:date>
    </item>
    <item>
      <title>Re: Embedding a scripting engine ?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544902#M8952</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArneB on Mon May 14 02:05:37 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Thibaut,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if you are using FreeRTOS you can use CLI for free: &lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://"&gt;http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_CLI/FreeRTOS_Plus_Command_Line_Interface.shtml&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:31:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544902#M8952</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:31:20Z</dc:date>
    </item>
    <item>
      <title>Re: Embedding a scripting engine ?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544903#M8953</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Leji on Mon May 14 02:38:09 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;picoc looks interesting, I'll try it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm not using an OS at the moment, so the effort of porting my application to freeRTOS would be quite big just to get scripting :)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:31:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544903#M8953</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:31:21Z</dc:date>
    </item>
    <item>
      <title>Re: Embedding a scripting engine ?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544904#M8954</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Leji on Tue May 15 02:04:32 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;In case anyone's interesting, I chose Pawn (picoc was not as easy to port &amp;amp; use, Pawn has nice documentation + IDE), which compiled quite easily.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To use it, I:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- imported amx, amxaux, amxcore and osdefs&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- build with AMX_NOPROPLIST and NDEBUG symbols (as a static lib)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- Write a script in Quincy (Pawn IDE), build and dump the outputed amx file somewhere in LPC memory&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- In my LPC main application (bulkData is the address of the script):&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AMX amx;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cell ret =0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int result = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memset(&amp;amp;amx, 0, sizeof(amx));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = amx_Init(&amp;amp;amx,bulkData);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (result != 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // handle error
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = amx_NativeInit(&amp;amp;amx);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (result != 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // handle error
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = amx_Exec(&amp;amp;amx,&amp;amp;ret,AMX_EXEC_MAIN);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (result != 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // handle error
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
// handle success !
// return ret
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;where amx_NativeInit is the function that initializes external functions calls, like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;static cell amx_toggle_GPIO(AMX *amx, const cell *params)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* params[1] = port
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * params[2] = pin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * params[3] = value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO[params[1]]-&amp;gt;FIODIR |= 1&amp;lt;&amp;lt;params[2];
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (params[3] == 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO[params[1]]-&amp;gt;FIOCLR |= 1&amp;lt;&amp;lt;params[2];
&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO[params[1]]-&amp;gt;FIOSET |= 1&amp;lt;&amp;lt;params[2];

&amp;nbsp;&amp;nbsp;&amp;nbsp; return SUCCESS;
}

int amx_NativeInit(AMX *amx)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; static AMX_NATIVE_INFO nativesFcn[]=
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {"toggleGPIO", amx_toggle_GPIO},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0,0} /* terminator */
&amp;nbsp;&amp;nbsp;&amp;nbsp; };

&amp;nbsp;&amp;nbsp;&amp;nbsp; return amx_Register(amx, nativesFcn, -1);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:31:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Embedding-a-scripting-engine/m-p/544904#M8954</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:31:21Z</dc:date>
    </item>
  </channel>
</rss>

