File size: 4,971 Bytes
b7b614e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
/*
* Copyright (c) 2022 EdgeImpulse Inc.
*
* 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.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _EI_CLASSIFIER_PORTING_H_
#define _EI_CLASSIFIER_PORTING_H_
#include <stdint.h>
#include <stdlib.h>
#include "edge-impulse-sdk/tensorflow/lite/micro/debug_log.h"
#if defined(__cplusplus) && EI_C_LINKAGE == 1
extern "C" {
#endif // defined(__cplusplus)
typedef enum {
EI_IMPULSE_OK = 0,
EI_IMPULSE_ERROR_SHAPES_DONT_MATCH = -1,
EI_IMPULSE_CANCELED = -2,
EI_IMPULSE_TFLITE_ERROR = -3,
EI_IMPULSE_DSP_ERROR = -5,
EI_IMPULSE_TFLITE_ARENA_ALLOC_FAILED = -6,
EI_IMPULSE_CUBEAI_ERROR = -7,
EI_IMPULSE_ALLOC_FAILED = -8,
EI_IMPULSE_ONLY_SUPPORTED_FOR_IMAGES = -9,
EI_IMPULSE_UNSUPPORTED_INFERENCING_ENGINE = -10,
EI_IMPULSE_OUT_OF_MEMORY = -11,
EI_IMPULSE_INPUT_TENSOR_WAS_NULL = -13,
EI_IMPULSE_OUTPUT_TENSOR_WAS_NULL = -14,
EI_IMPULSE_SCORE_TENSOR_WAS_NULL = -15,
EI_IMPULSE_LABEL_TENSOR_WAS_NULL = -16,
EI_IMPULSE_TENSORRT_INIT_FAILED = -17,
EI_IMPULSE_DRPAI_INIT_FAILED = -18,
EI_IMPULSE_DRPAI_RUNTIME_FAILED = -19,
EI_IMPULSE_DEPRECATED_MODEL = -20,
EI_IMPULSE_LAST_LAYER_NOT_AVAILABLE = -21,
EI_IMPULSE_INFERENCE_ERROR = -22,
EI_IMPULSE_AKIDA_ERROR = -23,
EI_IMPULSE_INVALID_SIZE = -24,
EI_IMPULSE_ONNX_ERROR = -25,
EI_IMPULSE_MEMRYX_ERROR = -26,
} EI_IMPULSE_ERROR;
/**
* Cancelable sleep, can be triggered with signal from other thread
*/
EI_IMPULSE_ERROR ei_sleep(int32_t time_ms);
/**
* Check if the sampler thread was canceled, use this in conjunction with
* the same signaling mechanism as ei_sleep
*/
EI_IMPULSE_ERROR ei_run_impulse_check_canceled();
/**
* Read the millisecond timer
*/
uint64_t ei_read_timer_ms();
/**
* Read the microsecond timer
*/
uint64_t ei_read_timer_us();
/**
* Set Serial baudrate
*/
void ei_serial_set_baudrate(int baudrate);
/**
* @brief Connect to putchar of target
*
* @param[in] c The chararater
*/
void ei_putchar(char c);
/**
* Print wrapper around printf()
* This is used internally to print debug information.
*/
__attribute__ ((format (printf, 1, 2)))
void ei_printf(const char *format, ...);
/**
* Override this function if your target cannot properly print floating points
* If not overriden, this will be sent through `ei_printf()`.
*/
void ei_printf_float(float f);
/**
* Wrapper around malloc
*/
void *ei_malloc(size_t size);
/**
* Wrapper around calloc
*/
void *ei_calloc(size_t nitems, size_t size);
/**
* Wrapper around free
*/
void ei_free(void *ptr);
#if defined(__cplusplus) && EI_C_LINKAGE == 1
}
#endif // defined(__cplusplus) && EI_C_LINKAGE == 1
// Load porting layer depending on target
#ifndef EI_PORTING_ARDUINO
#ifdef ARDUINO
#define EI_PORTING_ARDUINO 1
#else
#define EI_PORTING_ARDUINO 0
#endif
#endif
#ifndef EI_PORTING_ECM3532
#ifdef ECM3532
#define EI_PORTING_ECM3532 1
#else
#define EI_PORTING_ECM3532 0
#endif
#endif
#ifndef EI_PORTING_ESPRESSIF
#if defined(CONFIG_IDF_TARGET_ESP32) && EI_PORTING_ARDUINO == 0
#define EI_PORTING_ESPRESSIF 1
#else
#define EI_PORTING_ESPRESSIF 0
#endif
#endif
#ifndef EI_PORTING_MBED
#ifdef __MBED__
#define EI_PORTING_MBED 1
#else
#define EI_PORTING_MBED 0
#endif
#endif
#ifndef EI_PORTING_POSIX
#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__))
#define EI_PORTING_POSIX 1
#else
#define EI_PORTING_POSIX 0
#endif
#endif
#ifndef EI_PORTING_SILABS
#if defined(EFR32MG12P332F1024GL125)
#define EI_PORTING_SILABS 1
#else
#define EI_PORTING_SILABS 0
#endif
#endif
#ifndef EI_PORTING_RASPBERRY
#ifdef PICO_BOARD
#define EI_PORTING_RASPBERRY 1
#else
#define EI_PORTING_RASPBERRY 0
#endif
#endif
#ifndef EI_PORTING_ZEPHYR
#if defined(__ZEPHYR__)
#define EI_PORTING_ZEPHYR 1
#else
#define EI_PORTING_ZEPHYR 0
#endif
#endif
#ifndef EI_PORTING_STM32_CUBEAI
#if defined(USE_HAL_DRIVER) && !defined(__MBED__) && EI_PORTING_ZEPHYR == 0
#define EI_PORTING_STM32_CUBEAI 1
#else
#define EI_PORTING_STM32_CUBEAI 0
#endif
#endif
#ifndef EI_PORTING_HIMAX
#ifdef CPU_ARC
#define EI_PORTING_HIMAX 1
#else
#define EI_PORTING_HIMAX 0
#endif
#endif
#ifndef EI_PORTING_MINGW32
#ifdef __MINGW32__
#define EI_PORTING_MINGW32 1
#else
#define EI_PORTING_MINGW32 0
#endif
#endif
// End load porting layer depending on target
#endif // _EI_CLASSIFIER_PORTING_H_
|