view fluid-mnf/fluid.h @ 345:b595ff13547b

fluid-mnf/target.c: ported, passed compilation
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 13 Mar 2020 06:11:33 +0000
parents 9cecc930d78f
children 37b5f94de802
line wrap: on
line source

/******************************************************************************
 * FLUID (Flash Loader and Utility Independent of Device)
 * Idea, design and coding by Mads Meisner-Jensen, mmj@ti.com
 *
 * Main
 *
 * $Id: fluid.h 1.43 Fri, 25 Oct 2002 14:46:33 +0200 tsj $
 *
 ******************************************************************************/


/******************************************************************************
 * Exception definitions
 ******************************************************************************/

enum Exceptions {
    E_OK               =   0, /* Ok */

    E_DRIVER_INIT      =  -3, /* Driver failed to initialize */
    E_DRIVER_WAIT      =  -4, /* Driver recv_wait() failed */

    E_UART_INIT        =  -5, /* UART failed to initialize */
    E_UART_PARAM       =  -6, /* UART parameter bad or unsupported */
    E_UART_DRV_SEND    =  -7, /* UART driver transmit error */
    E_UART_DRV_RECV    =  -8, /* UART driver receive error */

    E_RECV_TIMEOUT     = -10, /* Receive timeout (no target reply) */
    E_RECV_ANTITIMEOUT = -11, /* Receive anti-timeout (target replied!?) */
    E_SEND_CHECKSUM    = -12, /* Transmit checksum error */
    E_RECV_CHECKSUM    = -13, /* Receive checksum error */
    E_PROTO_ERROR      = -14, /* Protocol error (bad char from target) */
    E_INVALID          = -15, /* Invalid command parameter */
    E_FIFO_OVERFLOW    = -16, /* RX FIFO overflow in target */

    E_FLASH_UNKNOWN    = -20, /* Flash device unknown */
    E_FLASH_TIMEOUT    = -21, /* Flash operation timeout */
    E_FLASH_VERIFY     = -22, /* Flash verify error */
    E_FLASH_COMMAND    = -23, /* Flash command sequence error */
    E_FLASH_VPPRANGE   = -24, /* Flash Vpp range error */
    E_FLASH_LOCKED     = -25, /* Flash block locked error */
    E_FLASH_ERROR      = -26, /* Flash error (unknown!?) */
    E_TARGET_TYPE      = -27, /* Target type not detected, unspecified or unknown */
    E_TARGET_MEMORY    = -28, /* Target out of memory */

    E_PARSER_EOF       = -30, /* Unexpected end of file */
    E_PARSER_KEYWORD   = -31, /* Syntax error: keyword expected */
    E_PARSER_STRING    = -32, /* Syntax error: string expected */
    E_PARSER_NUMBER    = -33, /* Syntax error: number expected */
    E_PARSER_END_BRACE = -34, /* Syntax error: missing end brace */
    E_PARSER_SYNTAX    = -35, /* Syntax error */
    E_PARSER_MEMMAP    = -36, /* Undefined flash memmap */
    E_PARSER_ALGORITHM = -37, /* Undefined flash algorithm */

    E_BOOTLOADER       = -40, /* Unsupported bootloader */

    E_FILE_OPEN        = -50, /* File open error */
    E_FILE_CLOSE       = -52, /* File close error */
    E_FILE_READ        = -53, /* File read error */
    E_FILE_WRITE       = -54, /* File write error */
    E_FILE_FORMAT      = -55, /* File format/syntax error */
    E_FILE_EMPTY       = -56, /* File empty or unreadable? */
    E_FILE_BUF_SMALL   = -57, /* File buffer too small */
    E_FILE_INPUT       = -58, /* No input file name supplied */
    E_FILE_OUTPUT      = -59, /* No output file name supplied */

    E_ADDR_RANGE       = -70, /* Bad address range */
    E_ERASE_SPEC       = -71, /* Bad erase override specifier */
    E_READ_SPEC        = -72, /* Bad memory read specifier */
    E_WRITE_SPEC       = -73, /* Bad memory write specifier */

    E_BADARG           = -80, /* Bad argument or out of range */
    E_ARG_MULTI        = -81, /* Multiple ambiguous arguments supplied */
    E_ARG_TOOMANY      = -82, /* Too many arguments supplied */

    E_MEMORY           = -85, /* Out of memory */
    E_BUFFER           = -86, /* Internal (static) buffer too small */

    E_ROM_SSERVICE     = -90, /* Secure ROM service error */

    E_INTERNAL         = -99, /* Internal program state error */

    E_OS               = -100
};


/******************************************************************************
 * Typedefs and Prototypes
 ******************************************************************************/

typedef unsigned char  uint8;
typedef unsigned short uint16;
typedef unsigned long  uint32;
typedef signed char    int8;
typedef signed short   int16;
typedef signed long    int32;

void main_warning(int error);
void main_error(int error);
void main_fatal(int error);
void main_msg(char *format, ...);

int flowf(int level, char *format, ...);


/******************************************************************************
 * Globals
 ******************************************************************************/

#define ARG_FILE_LIST_SIZE_MAX 8

extern char *arg_file_list[ARG_FILE_LIST_SIZE_MAX];
extern int  arg_file_list_size;

extern char *arg_erase_override;
extern char *arg_read;
extern char *arg_write;
extern int  arg_checksum;
extern int  arg_compress;
extern int  arg_flash_read;
extern int  arg_dry_run;
extern int  arg_list_devices;
extern char arg_target_type;
extern int  arg_image_map_show;
extern int  arg_sector_map_show;
extern int  arg_sector_list_show;
extern int  arg_timers_show;
extern int  arg_timers_extended_show;
extern int  arg_checksum_show;
extern int  arg_show_hexdump;
extern int  arg_target_trace_enable;
extern int  arg_progress;
extern char arg_hexfile_type;
extern char arg_hexfile_memwidth;

extern int  arg_target_reset;
extern int  arg_rom_bootloader;
extern int  arg_boot_delay_rom;
extern int  arg_boot_delay_fluid;
extern int  arg_device_id0;
extern int  arg_device_id1;

extern int  arg_uart_port;
extern int  arg_uart_baudrate;
extern char arg_uart_flowcontrol[2];
extern char arg_uart_level_convert;

extern char arg_verbose;
extern int  arg_debug_resume;
extern int  arg_debug_trace_pe;
extern int  arg_keep_going;

extern char *argv_0;

extern int  arg_trlevel;
extern int  arg_trmask;
extern int  arg_trspaces;
extern int  arg_skip_erase;

extern int arg_errorfd;

// Secure Calypso Plus
extern char *arg_die_id_file_name;
extern char *arg_imeisv;
extern char *arg_platform_certificate_addr;
extern int  arg_request_certificate;
extern int  arg_delay_for_changing_cs5;
extern int  arg_uart_baudrate_during_cmd_download;
extern int  arg_uart_timeout_configuration;
extern int  arg_block_size;

// IMEI protection
#define C_IMEISV_DIGITS 16
#define C_IMEISV_BYTES 8
#define C_PLATFORM_CERT_ADDR_DIGITS 8
#define C_PLATFORM_CERT_ADDR_BYTES 4
// End Secure Calypso Plus

enum VERBOSITY_LEVELS {
    TESTOUTPUT = -2, // Only test output.
    ALWAYS     = -2,
    QUIET      = -1, // No messsages at all.
    NORMAL     =  0, // Overview message level.
    VERBOSE    =  1, // Detailed messages. Useful for diagnosing problems.
    BLABBER    =  2, // Very verbose messages. Useful for debugging.
    DEBUG      =  3  // Very very verbose messages. Useful for debugging.
};


/******************************************************************************
 * Trace mask bits definition
 ******************************************************************************/

enum TraceMaskBits {
    TrMAIN           = 1 << 24,

    TrUtility        = TrMAIN | 0x000002,
    TrMachines       = TrMAIN | 0x000004,

    TrTargetDrv      = TrMAIN | 0x000010,
    TrTargetWait     = TrMAIN | 0x000020,

    TrGetChar        = TrMAIN | 0x000100,
    TrPutChar        = TrMAIN | 0x000200,
    TrDriverGet      = TrMAIN | 0x000400,
    TrDriverPut      = TrMAIN | 0x000800,

    TrHexRead        = TrMAIN | 0x001000,
    TrHexWrite       = TrMAIN | 0x002000,
    TrArgParser      = TrMAIN | 0x004000,
    TrCmdLineParser  = TrMAIN | 0x008000,

    TrParser         = TrMAIN | 0x010000
};