Erick / Mbed 2 deprecated ICE-F412

Dependencies:   mbed-rtos mbed

Committer:
jmarkel44
Date:
Tue Jan 24 19:05:33 2017 +0000
Revision:
0:61364762ee0e
Port from IAR to Nucleo-F412 board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 0:61364762ee0e 1 #include <stdio.h>
jmarkel44 0:61364762ee0e 2 #include "v7_execute.h"
jmarkel44 0:61364762ee0e 3 #include "utilities.h"
jmarkel44 0:61364762ee0e 4 #include "rtos.h"
jmarkel44 0:61364762ee0e 5
jmarkel44 0:61364762ee0e 6 #ifdef EXECUTE_SCRIPT
jmarkel44 0:61364762ee0e 7
jmarkel44 0:61364762ee0e 8 struct v7 *v7;
jmarkel44 0:61364762ee0e 9 Mutex v7_mutex;
jmarkel44 0:61364762ee0e 10
jmarkel44 0:61364762ee0e 11 void v7_Create_Engine(void)
jmarkel44 0:61364762ee0e 12 {
jmarkel44 0:61364762ee0e 13 v7 = v7_create();
jmarkel44 0:61364762ee0e 14 v7_Register_C_Calls(v7);
jmarkel44 0:61364762ee0e 15 }
jmarkel44 0:61364762ee0e 16
jmarkel44 0:61364762ee0e 17 void v7_Load_Script(const char * scriptString)
jmarkel44 0:61364762ee0e 18 {
jmarkel44 0:61364762ee0e 19 enum v7_err rcode;
jmarkel44 0:61364762ee0e 20 v7_val_t result;
jmarkel44 0:61364762ee0e 21
jmarkel44 0:61364762ee0e 22 osStatus mutex_ret = v7_mutex.lock();
jmarkel44 0:61364762ee0e 23 if( mutex_ret != osOK ) printf("%s:%d: did not lock mutex, ret=0x%x\r\n", __func__, __LINE__, mutex_ret);
jmarkel44 0:61364762ee0e 24 rcode = v7_exec(v7, scriptString, &result);
jmarkel44 0:61364762ee0e 25 mutex_ret = v7_mutex.unlock();
jmarkel44 0:61364762ee0e 26 if( mutex_ret != osOK ) printf("%s:%d: did not unlock mutex, ret=0x%x\r\n", __func__, __LINE__, mutex_ret);
jmarkel44 0:61364762ee0e 27 if( rcode != V7_OK )
jmarkel44 0:61364762ee0e 28 {
jmarkel44 0:61364762ee0e 29 printf("%s:%d: Failed to load script: %s (len=%d), ret=%d\r\n", __func__, __LINE__, scriptString, strlen(scriptString), rcode);
jmarkel44 0:61364762ee0e 30 }
jmarkel44 0:61364762ee0e 31 }
jmarkel44 0:61364762ee0e 32
jmarkel44 0:61364762ee0e 33 void v7_Execute_Script( std::string Command, std::string argv[NUM_SCRIPT_ARGS] )
jmarkel44 0:61364762ee0e 34 {
jmarkel44 0:61364762ee0e 35 v7_val_t func, result, args;
jmarkel44 0:61364762ee0e 36 double argv_array[NUM_SCRIPT_ARGS];
jmarkel44 0:61364762ee0e 37
jmarkel44 0:61364762ee0e 38 if( Command.size() == 0 ) {
jmarkel44 0:61364762ee0e 39 return;
jmarkel44 0:61364762ee0e 40 }
jmarkel44 0:61364762ee0e 41 // printf("\r%s\r\n", Util_getHeapData().c_str());
jmarkel44 0:61364762ee0e 42
jmarkel44 0:61364762ee0e 43 memset( argv_array, 0, (sizeof(double) * NUM_SCRIPT_ARGS));
jmarkel44 0:61364762ee0e 44 for( int i=0; i<NUM_SCRIPT_ARGS; i++ ) {
jmarkel44 0:61364762ee0e 45 if( argv[i].size() != 0 ) {
jmarkel44 0:61364762ee0e 46 argv_array[i] = RegisterValueMap[argv[i]].float_value;
jmarkel44 0:61364762ee0e 47 }
jmarkel44 0:61364762ee0e 48 }
jmarkel44 0:61364762ee0e 49
jmarkel44 0:61364762ee0e 50 // printf("Command.size=%d, Command=%s(%s=%2.2f,%s=%2.2f,%s=%2.2f,%s=%2.2f)\r\n", Command.size() ,Command.c_str(), argv[0].c_str(), argv_array[0], argv[1].c_str(), argv_array[1], argv[2].c_str(), argv_array[2], argv[3].c_str(), argv_array[3]);
jmarkel44 0:61364762ee0e 51
jmarkel44 0:61364762ee0e 52 osStatus mutex_ret = v7_mutex.lock();
jmarkel44 0:61364762ee0e 53 if( mutex_ret != osOK ) printf("%s:%d: did not lock mutex, ret=0x%x\r\n", __func__, __LINE__, mutex_ret);
jmarkel44 0:61364762ee0e 54
jmarkel44 0:61364762ee0e 55 func = v7_get(v7, v7_get_global(v7), Command.c_str(), Command.size());
jmarkel44 0:61364762ee0e 56
jmarkel44 0:61364762ee0e 57 args = v7_mk_array(v7);
jmarkel44 0:61364762ee0e 58 for( int i=0; i<NUM_SCRIPT_ARGS; i++ ) {
jmarkel44 0:61364762ee0e 59 if( argv[i].size() != 0 ) {
jmarkel44 0:61364762ee0e 60 // printf("Pushing %s\r\n", argv[i].c_str());
jmarkel44 0:61364762ee0e 61 v7_array_push(v7, args, v7_mk_string(v7, argv[i].c_str(), argv[i].size(), false));
jmarkel44 0:61364762ee0e 62 }
jmarkel44 0:61364762ee0e 63 }
jmarkel44 0:61364762ee0e 64
jmarkel44 0:61364762ee0e 65 if (v7_apply(v7, func, V7_UNDEFINED, args, &result) == V7_OK) {
jmarkel44 0:61364762ee0e 66 // printf("Result: %g\r\n", v7_get_double(v7, result));
jmarkel44 0:61364762ee0e 67 } else {
jmarkel44 0:61364762ee0e 68 printf("Error while calling %s\r\n", Command.c_str());
jmarkel44 0:61364762ee0e 69 }
jmarkel44 0:61364762ee0e 70
jmarkel44 0:61364762ee0e 71 mutex_ret = v7_mutex.unlock();
jmarkel44 0:61364762ee0e 72 if( mutex_ret != osOK ) printf("%s:%d: did not unlock mutex, ret=0x%x\r\n", __func__, __LINE__, mutex_ret);
jmarkel44 0:61364762ee0e 73 }
jmarkel44 0:61364762ee0e 74 #endif