| /* |
| * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| /** |
| * @file picoextapi.c |
| * |
| * API extension for development use |
| * |
| * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland |
| * All rights reserved. |
| * |
| * History: |
| * - 2009-04-20 -- initial version |
| * |
| */ |
| #include "picodefs.h" |
| #include "picoos.h" |
| #include "picoctrl.h" |
| #include "picodbg.h" |
| #include "picoapi.h" |
| #include "picoextapi.h" |
| #include "picoapid.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| #if 0 |
| } |
| #endif |
| |
| /* this is not used anymore. For the picosh banner, set |
| * progv.progVers in picosh.c instead. */ |
| #define PICO_VERSION_INFO (picoos_char *)"invalid" |
| |
| |
| extern pico_Status pico_initialize_priv( |
| void *memory, |
| const pico_Uint32 size, |
| pico_Int16 enableMemProt, |
| pico_System *system); |
| |
| |
| /* System initialization and termination functions ****************************/ |
| |
| |
| PICO_FUNC picoext_initialize( |
| void *memory, |
| const pico_Uint32 size, |
| pico_Int16 enableMemProt, |
| pico_System *outSystem |
| ) |
| { |
| return pico_initialize_priv(memory, size, enableMemProt, outSystem); |
| } |
| |
| |
| /* System and lingware inspection functions ***********************************/ |
| |
| /* @todo : not supported yet */ |
| PICO_FUNC picoext_getVersionInfo( |
| pico_Retstring outInfo, |
| const pico_Int16 outInfoMaxLen |
| ) |
| { |
| if (outInfo == NULL) { |
| return PICO_ERR_NULLPTR_ACCESS; |
| } |
| picoos_strlcpy((picoos_char *) outInfo, PICO_VERSION_INFO, outInfoMaxLen); |
| return PICO_OK; |
| } |
| |
| |
| /* Debugging/testing support functions *****************************************/ |
| |
| |
| PICO_FUNC picoext_setTraceLevel( |
| pico_System system, |
| pico_Int32 level |
| ) |
| { |
| if (NULL == system) { |
| return PICO_ERR_NULLPTR_ACCESS; |
| } |
| if (level < 0) { |
| level = 0; |
| } |
| if (level > PICODBG_LOG_LEVEL_TRACE) { |
| level = PICODBG_LOG_LEVEL_TRACE; |
| } |
| PICODBG_SET_LOG_LEVEL(level); |
| return PICO_OK; |
| } |
| |
| |
| PICO_FUNC picoext_setTraceFilterFN( |
| pico_System system, |
| const pico_Char *name |
| ) |
| { |
| |
| if (NULL == system) { |
| return PICO_ERR_NULLPTR_ACCESS; |
| } |
| name = name; /*PP 13.10.08 : fix warning "var not used in this function"*/ |
| PICODBG_SET_LOG_FILTERFN((const char *)name); |
| return PICO_OK; |
| } |
| |
| |
| PICO_FUNC picoext_setLogFile( |
| pico_System system, |
| const pico_Char *name |
| ) |
| { |
| if (NULL == system) { |
| return PICO_ERR_NULLPTR_ACCESS; |
| } |
| name = name; /*PP 13.10.08 : fix warning "var not used in this function"*/ |
| PICODBG_SET_LOG_FILE((const char *) name); |
| return PICO_OK; |
| } |
| |
| |
| /* Memory usage ***************************************************************/ |
| |
| |
| pico_Status getMemUsage( |
| picoos_Common common, |
| picoos_bool resetIncremental, |
| picoos_int32 *usedBytes, |
| picoos_int32 *incrUsedBytes, |
| picoos_int32 *maxUsedBytes |
| ) |
| { |
| pico_Status status = PICO_OK; |
| |
| if (common == NULL) { |
| status = PICO_ERR_NULLPTR_ACCESS; |
| } else { |
| picoos_emReset(common->em); |
| picoos_getMemUsage(common->mm, resetIncremental, usedBytes, incrUsedBytes, maxUsedBytes); |
| status = picoos_emGetExceptionCode(common->em); |
| } |
| |
| return status; |
| } |
| |
| |
| PICO_FUNC picoext_getSystemMemUsage( |
| pico_System system, |
| pico_Int16 resetIncremental, |
| pico_Int32 *outUsedBytes, |
| pico_Int32 *outIncrUsedBytes, |
| pico_Int32 *outMaxUsedBytes |
| ) |
| { |
| pico_Status status = PICO_OK; |
| |
| if (!is_valid_system_handle(system)) { |
| status = PICO_ERR_INVALID_HANDLE; |
| } else if ((outUsedBytes == NULL) || (outIncrUsedBytes == NULL) || (outMaxUsedBytes == NULL)) { |
| status = PICO_ERR_NULLPTR_ACCESS; |
| } else { |
| picoos_Common common = pico_sysGetCommon(system); |
| status = getMemUsage(common, resetIncremental != 0, outUsedBytes, outIncrUsedBytes, outMaxUsedBytes); |
| } |
| |
| return status; |
| } |
| |
| |
| PICO_FUNC picoext_getEngineMemUsage( |
| pico_Engine engine, |
| pico_Int16 resetIncremental, |
| pico_Int32 *outUsedBytes, |
| pico_Int32 *outIncrUsedBytes, |
| pico_Int32 *outMaxUsedBytes |
| ) |
| { |
| pico_Status status = PICO_OK; |
| |
| if (!picoctrl_isValidEngineHandle((picoctrl_Engine) engine)) { |
| status = PICO_ERR_INVALID_HANDLE; |
| } else if ((outUsedBytes == NULL) || (outIncrUsedBytes == NULL) || (outMaxUsedBytes == NULL)) { |
| status = PICO_ERR_NULLPTR_ACCESS; |
| } else { |
| picoos_Common common = picoctrl_engGetCommon((picoctrl_Engine) engine); |
| status = getMemUsage(common, resetIncremental != 0, outUsedBytes, outIncrUsedBytes, outMaxUsedBytes); |
| } |
| |
| return status; |
| } |
| |
| PICO_FUNC picoext_getLastScheduledPU( |
| pico_Engine engine |
| ) |
| { |
| pico_Status status = PICO_OK; |
| status = picoctrl_getLastScheduledPU((picoctrl_Engine) engine); |
| return status; |
| } |
| |
| PICO_FUNC picoext_getLastProducedItemType( |
| pico_Engine engine |
| ) |
| { |
| pico_Status status = PICO_OK; |
| status = picoctrl_getLastProducedItemType((picoctrl_Engine) engine); |
| return status; |
| } |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| /* end */ |