1 /* 2 * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 /** 17 * @file picoextapi.c 18 * 19 * API extension for development use 20 * 21 * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 22 * All rights reserved. 23 * 24 * History: 25 * - 2009-04-20 -- initial version 26 * 27 */ 28 #include "picodefs.h" 29 #include "picoos.h" 30 #include "picoctrl.h" 31 #include "picodbg.h" 32 #include "picoapi.h" 33 #include "picoextapi.h" 34 #include "picoapid.h" 35 36 #ifdef __cplusplus 37 extern "C" { 38 #endif 39 #if 0 40 } 41 #endif 42 43 /* this is not used anymore. For the picosh banner, set 44 * progv.progVers in picosh.c instead. */ 45 #define PICO_VERSION_INFO (picoos_char *)"invalid" 46 47 48 extern pico_Status pico_initialize_priv( 49 void *memory, 50 const pico_Uint32 size, 51 pico_Int16 enableMemProt, 52 pico_System *system); 53 54 55 /* System initialization and termination functions ****************************/ 56 57 58 PICO_FUNC picoext_initialize( 59 void *memory, 60 const pico_Uint32 size, 61 pico_Int16 enableMemProt, 62 pico_System *outSystem 63 ) 64 { 65 return pico_initialize_priv(memory, size, enableMemProt, outSystem); 66 } 67 68 69 /* System and lingware inspection functions ***********************************/ 70 71 /* @todo : not supported yet */ 72 PICO_FUNC picoext_getVersionInfo( 73 pico_Retstring outInfo, 74 const pico_Int16 outInfoMaxLen 75 ) 76 { 77 if (outInfo == NULL) { 78 return PICO_ERR_NULLPTR_ACCESS; 79 } 80 picoos_strlcpy((picoos_char *) outInfo, PICO_VERSION_INFO, outInfoMaxLen); 81 return PICO_OK; 82 } 83 84 85 /* Debugging/testing support functions *****************************************/ 86 87 88 PICO_FUNC picoext_setTraceLevel( 89 pico_System system, 90 pico_Int32 level 91 ) 92 { 93 if (NULL == system) { 94 return PICO_ERR_NULLPTR_ACCESS; 95 } 96 if (level < 0) { 97 level = 0; 98 } 99 if (level > PICODBG_LOG_LEVEL_TRACE) { 100 level = PICODBG_LOG_LEVEL_TRACE; 101 } 102 PICODBG_SET_LOG_LEVEL(level); 103 return PICO_OK; 104 } 105 106 107 PICO_FUNC picoext_setTraceFilterFN( 108 pico_System system, 109 const pico_Char *name 110 ) 111 { 112 113 if (NULL == system) { 114 return PICO_ERR_NULLPTR_ACCESS; 115 } 116 name = name; /*PP 13.10.08 : fix warning "var not used in this function"*/ 117 PICODBG_SET_LOG_FILTERFN((const char *)name); 118 return PICO_OK; 119 } 120 121 122 PICO_FUNC picoext_setLogFile( 123 pico_System system, 124 const pico_Char *name 125 ) 126 { 127 if (NULL == system) { 128 return PICO_ERR_NULLPTR_ACCESS; 129 } 130 name = name; /*PP 13.10.08 : fix warning "var not used in this function"*/ 131 PICODBG_SET_LOG_FILE((const char *) name); 132 return PICO_OK; 133 } 134 135 136 /* Memory usage ***************************************************************/ 137 138 139 pico_Status getMemUsage( 140 picoos_Common common, 141 picoos_bool resetIncremental, 142 picoos_int32 *usedBytes, 143 picoos_int32 *incrUsedBytes, 144 picoos_int32 *maxUsedBytes 145 ) 146 { 147 pico_Status status = PICO_OK; 148 149 if (common == NULL) { 150 status = PICO_ERR_NULLPTR_ACCESS; 151 } else { 152 picoos_emReset(common->em); 153 picoos_getMemUsage(common->mm, resetIncremental, usedBytes, incrUsedBytes, maxUsedBytes); 154 status = picoos_emGetExceptionCode(common->em); 155 } 156 157 return status; 158 } 159 160 161 PICO_FUNC picoext_getSystemMemUsage( 162 pico_System system, 163 pico_Int16 resetIncremental, 164 pico_Int32 *outUsedBytes, 165 pico_Int32 *outIncrUsedBytes, 166 pico_Int32 *outMaxUsedBytes 167 ) 168 { 169 pico_Status status = PICO_OK; 170 171 if (!is_valid_system_handle(system)) { 172 status = PICO_ERR_INVALID_HANDLE; 173 } else if ((outUsedBytes == NULL) || (outIncrUsedBytes == NULL) || (outMaxUsedBytes == NULL)) { 174 status = PICO_ERR_NULLPTR_ACCESS; 175 } else { 176 picoos_Common common = pico_sysGetCommon(system); 177 status = getMemUsage(common, resetIncremental != 0, outUsedBytes, outIncrUsedBytes, outMaxUsedBytes); 178 } 179 180 return status; 181 } 182 183 184 PICO_FUNC picoext_getEngineMemUsage( 185 pico_Engine engine, 186 pico_Int16 resetIncremental, 187 pico_Int32 *outUsedBytes, 188 pico_Int32 *outIncrUsedBytes, 189 pico_Int32 *outMaxUsedBytes 190 ) 191 { 192 pico_Status status = PICO_OK; 193 194 if (!picoctrl_isValidEngineHandle((picoctrl_Engine) engine)) { 195 status = PICO_ERR_INVALID_HANDLE; 196 } else if ((outUsedBytes == NULL) || (outIncrUsedBytes == NULL) || (outMaxUsedBytes == NULL)) { 197 status = PICO_ERR_NULLPTR_ACCESS; 198 } else { 199 picoos_Common common = picoctrl_engGetCommon((picoctrl_Engine) engine); 200 status = getMemUsage(common, resetIncremental != 0, outUsedBytes, outIncrUsedBytes, outMaxUsedBytes); 201 } 202 203 return status; 204 } 205 206 PICO_FUNC picoext_getLastScheduledPU( 207 pico_Engine engine 208 ) 209 { 210 pico_Status status = PICO_OK; 211 status = picoctrl_getLastScheduledPU((picoctrl_Engine) engine); 212 return status; 213 } 214 215 PICO_FUNC picoext_getLastProducedItemType( 216 pico_Engine engine 217 ) 218 { 219 pico_Status status = PICO_OK; 220 status = picoctrl_getLastProducedItemType((picoctrl_Engine) engine); 221 return status; 222 } 223 224 #ifdef __cplusplus 225 } 226 #endif 227 228 /* end */ 229