pm.h File Reference

PyMite Header. More...

#include <stdint.h>
#include <stdio.h>
#include "pmfeatures.h"
#include "sli.h"
#include "mem.h"
#include "obj.h"
#include "seq.h"
#include "tuple.h"
#include "strobj.h"
#include "heap.h"
#include "int.h"
#include "seglist.h"
#include "list.h"
#include "dict.h"
#include "codeobj.h"
#include "func.h"
#include "module.h"
#include "frame.h"
#include "interp.h"
#include "img.h"
#include "global.h"
#include "class.h"
#include "thread.h"
#include "float.h"
#include "plat.h"

Go to the source code of this file.

Defines

#define PM_RELEASE   8
#define C_NULL   0
#define C_FALSE   0
#define C_TRUE   (!C_FALSE)
#define C_SAME   (int8_t)0
#define C_DIFFER   (int8_t)-1
#define INLINE   __inline__
#define PM_RAISE(retexn, exn)   retexn = (exn)
#define PM_BREAK_IF_ERROR(retval)   if((retval) != PM_RET_OK)break
#define PM_RETURN_IF_ERROR(retval)
#define PM_REPORT_IF_ERROR(retval)
#define C_ASSERT(boolexpr)
#define VERBOSITY_LOW   1
#define VERBOSITY_MEDIUM   2
#define VERBOSITY_HIGH   3
#define C_DEBUG_PRINT(...)

Typedefs

typedef enum PmReturn_e PmReturn_t

Enumerations

enum  PmReturn_e {
  PM_RET_OK = 0, PM_RET_NO = 0xFF, PM_RET_ERR = 0xFE, PM_RET_STUB = 0xFD,
  PM_RET_ASSERT_FAIL = 0xFC, PM_RET_FRAME_SWITCH = 0xFB, PM_RET_EX = 0xE0, PM_RET_EX_EXIT = 0xE1,
  PM_RET_EX_IO = 0xE2, PM_RET_EX_ZDIV = 0xE3, PM_RET_EX_ASSRT = 0xE4, PM_RET_EX_ATTR = 0xE5,
  PM_RET_EX_IMPRT = 0xE6, PM_RET_EX_INDX = 0xE7, PM_RET_EX_KEY = 0xE8, PM_RET_EX_MEM = 0xE9,
  PM_RET_EX_NAME = 0xEA, PM_RET_EX_SYNTAX = 0xEB, PM_RET_EX_SYS = 0xEC, PM_RET_EX_TYPE = 0xED,
  PM_RET_EX_VAL = 0xEE, PM_RET_EX_STOP = 0xEF, PM_RET_EX_WARN = 0xF0
}

Functions

PmReturn_t pm_init (PmMemSpace_t memspace, uint8_t *pusrimg)
PmReturn_t pm_run (uint8_t const *modstr)
PmReturn_t pm_vmPeriodic (uint16_t usecsSinceLastCall)

Variables

volatile uint32_t pm_timerMsTicks


Detailed Description

PyMite Header.

Include things that are needed by nearly everything.


Define Documentation

#define C_ASSERT ( boolexpr   ) 

Assert statements are removed from production code

#define C_DIFFER   (int8_t)-1

Comparison result is that items differ

#define C_FALSE   0

false for C code

#define C_NULL   0

null for C code

#define C_SAME   (int8_t)0

Comparison result is that items are the same

#define C_TRUE   (!C_FALSE)

true for C code

#define INLINE   __inline__

PORT inline for C code

#define PM_BREAK_IF_ERROR ( retval   )     if((retval) != PM_RET_OK)break

if retval is not OK, break from the block

#define PM_RAISE ( retexn,
exn   )     retexn = (exn)

Returns an exception error code and stores debug data

This macro must be used as an rval statement. That is, it must be used after an assignment such as "retval = " or a return statement

#define PM_RELEASE   8

Value indicating the release of PyMite

This value should be incremented for every public release. It helps locate a defect when used in conjunction with a fileID and line number.

#define PM_REPORT_IF_ERROR ( retval   ) 

Value:

if ((retval) != PM_RET_OK) \
                                        plat_reportError(retval)
print an error message if argument is not PM_RET_OK

#define PM_RETURN_IF_ERROR ( retval   ) 

Value:

if((retval) != PM_RET_OK) \
                                        return (retval)
return an error code if it is not PM_RET_OK

#define VERBOSITY_HIGH   3

Use as the first argument to C_DEBUG_PRINT for high volume messages

#define VERBOSITY_LOW   1

Use as the first argument to C_DEBUG_PRINT for low volume messages

#define VERBOSITY_MEDIUM   2

Use as the first argument to C_DEBUG_PRINT for medium volume messages


Typedef Documentation

typedef enum PmReturn_e PmReturn_t

Return values for system functions to report status, errors, exceptions, etc. Normally, functions which use these values should propagate the same return value up the call tree to the interpreter.


Enumeration Type Documentation

enum PmReturn_e

Return values for system functions to report status, errors, exceptions, etc. Normally, functions which use these values should propagate the same return value up the call tree to the interpreter.

Enumerator:
PM_RET_OK  Everything is ok
PM_RET_NO  General "no result"
PM_RET_ERR  General failure
PM_RET_STUB  Return val for stub fxn
PM_RET_ASSERT_FAIL  Assertion failure
PM_RET_FRAME_SWITCH  Frame pointer was modified
PM_RET_EX  General exception
PM_RET_EX_EXIT  System exit
PM_RET_EX_IO  Input/output error
PM_RET_EX_ZDIV  Zero division error
PM_RET_EX_ASSRT  Assertion error
PM_RET_EX_ATTR  Attribute error
PM_RET_EX_IMPRT  Import error
PM_RET_EX_INDX  Index error
PM_RET_EX_KEY  Key error
PM_RET_EX_MEM  Memory error
PM_RET_EX_NAME  Name error
PM_RET_EX_SYNTAX  Syntax error
PM_RET_EX_SYS  System error
PM_RET_EX_TYPE  Type error
PM_RET_EX_VAL  Value error
PM_RET_EX_STOP  Stop iteration
PM_RET_EX_WARN  Warning


Function Documentation

PmReturn_t pm_init ( PmMemSpace_t  memspace,
uint8_t *  pusrimg 
)

Initializes the PyMite virtual machine and indexes the user's application image. The VM heap and globals are reset. The argument, pusrimg, may be null for interactive sessions.

Parameters:
memspace Memory space in which the user image is located
pusrimg Address of the user image in the memory space
Returns:
Return status

PmReturn_t pm_run ( uint8_t const *  modstr  ) 

Executes the named module

Parameters:
modstr Name of module to run
Returns:
Return status

PmReturn_t pm_vmPeriodic ( uint16_t  usecsSinceLastCall  ) 

Needs to be called periodically by the host program. For the desktop target, it is periodically called using a signal. For embedded targets, it needs to be called periodically. It should be called from a timer interrupt.

Parameters:
usecsSinceLastCall Microseconds (not less than those) that passed since last call. This must be <64535.
Returns:
Return status


Generated on Wed Feb 24 13:37:03 2010 for Python-on-a-chip by  doxygen 1.5.9