[currently viewing: /LegoNXT/NXCDefs.h]
 
#ifndef NXCDEFS_H
#define NXCDEFS_H
//==============================================================================
//
// Copyright (C) 2006 - John Hansen. All rights reserved.
//
// Workfile:: NXCDefs.h
// Date:: 2007-01-26
// Revision:: 20
//
//------------------------------------------------------------------------------
//
// Contains declarations for the NXC NXT API resources
//
//==============================================================================

#include "NBCCommon.h"

#define u8 unsigned char
#define s8 char
#define u16 unsigned int
#define s16 int
#define u32 unsigned long
#define s32 long

#define S1 0
#define S2 1
#define S3 2
#define S4 3

#define SENSOR_1 Sensor(S1)
#define SENSOR_2 Sensor(S2)
#define SENSOR_3 Sensor(S3)
#define SENSOR_4 Sensor(S4)

#define SENSOR_TYPE_NONE            IN_TYPE_NO_SENSOR
#define SENSOR_TYPE_TOUCH           IN_TYPE_SWITCH
#define SENSOR_TYPE_TEMPERATURE     IN_TYPE_TEMPERATURE
#define SENSOR_TYPE_LIGHT           IN_TYPE_REFLECTION
#define SENSOR_TYPE_ROTATION        IN_TYPE_ANGLE
#define SENSOR_TYPE_LIGHT_ACTIVE    IN_TYPE_LIGHT_ACTIVE
#define SENSOR_TYPE_LIGHT_INACTIVE  IN_TYPE_LIGHT_INACTIVE
#define SENSOR_TYPE_SOUND_DB        IN_TYPE_SOUND_DB
#define SENSOR_TYPE_SOUND_DBA       IN_TYPE_SOUND_DBA
#define SENSOR_TYPE_CUSTOM          IN_TYPE_CUSTOM
#define SENSOR_TYPE_LOWSPEED        IN_TYPE_LOWSPEED
#define SENSOR_TYPE_LOWSPEED_9V     IN_TYPE_LOWSPEED_9V
#define SENSOR_TYPE_HIGHSPEED       IN_TYPE_HISPEED

#define SENSOR_MODE_RAW        IN_MODE_RAW
#define SENSOR_MODE_BOOL    IN_MODE_BOOLEAN
#define SENSOR_MODE_EDGE    IN_MODE_TRANSITIONCNT
#define SENSOR_MODE_PULSE    IN_MODE_PERIODCOUNTER
#define SENSOR_MODE_PERCENT    IN_MODE_PCTFULLSCALE
#define SENSOR_MODE_CELSIUS    IN_MODE_CELSIUS
#define SENSOR_MODE_FAHRENHEIT    IN_MODE_FAHRENHEIT
#define SENSOR_MODE_ROTATION    IN_MODE_ANGLESTEP

#define _SENSOR_CFG(type,mode)    (((type)<<8)+(mode))
#define SENSOR_TOUCH        _SENSOR_CFG(SENSOR_TYPE_TOUCH, SENSOR_MODE_BOOL)
#define SENSOR_LIGHT        _SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_PERCENT)
#define SENSOR_ROTATION        _SENSOR_CFG(SENSOR_TYPE_ROTATION, SENSOR_MODE_ROTATION)
#define SENSOR_CELSIUS        _SENSOR_CFG(SENSOR_TYPE_TEMPERATURE, SENSOR_MODE_CELSIUS)
#define SENSOR_FAHRENHEIT    _SENSOR_CFG(SENSOR_TYPE_TEMPERATURE, SENSOR_MODE_FAHRENHEIT)
#define    SENSOR_PULSE        _SENSOR_CFG(SENSOR_TYPE_TOUCH, SENSOR_MODE_PULSE)
#define SENSOR_EDGE        _SENSOR_CFG(SENSOR_TYPE_TOUCH, SENSOR_MODE_EDGE)

#define SetSensor(sensor, tm) { SetSensorType(sensor, tm>>8); SetSensorMode(sensor, tm&0xff); }

#define PlayTone(f, d) PlayToneEx(f, d, 4, 0)
#define PlayFile(f) PlayFileEx(f, 4, 0)
#define ClearScreen() asm { PointOut(200, 200, TRUE) }

// input fields
#define Sensor(p) asm { ReadSensor(p, __RETVAL__) }
#define SensorUS(p) asm { ReadSensorUS(p, __RETVAL__) }
#define SensorType(p) GetInput(p, Type)
#define SensorMode(p) GetInput(p, InputMode)
#define SensorRaw(p) GetInput(p, RawValue)
#define SensorNormalized(p) GetInput(p, NormalizedValue)
#define SensorScaled(p) GetInput(p, ScaledValue)
#define SensorInvalid(p) GetInput(p, InvalidData)

// output fields
#define MotorMode(p) GetOutput(p, OutputMode)
#define MotorPower(p) GetOutput(p, Power)
#define MotorActualSpeed(p) GetOutput(p, ActualSpeed)
#define MotorTachoCount(p) GetOutput(p, TachoCount)
#define MotorTachoLimit(p) GetOutput(p, TachoLimit)
#define MotorRunState(p) GetOutput(p, RunState)
#define MotorTurnRatio(p) GetOutput(p, TurnRatio)
#define MotorRegulation(p) GetOutput(p, RegMode)
#define MotorOverload(p) GetOutput(p, Overload)
#define MotorRegPValue(p) GetOutput(p, RegPValue)
#define MotorRegIValue(p) GetOutput(p, RegIValue)
#define MotorRegDValue(p) GetOutput(p, RegDValue)
#define MotorBlockTachoCount(p) GetOutput(p, BlockTachoCount)
#define MotorRotationCount(p) GetOutput(p, RotationCount)

#define ResetTachoCount(ports) SetOutput(ports, UpdateFlags, RESET_COUNT)
#define ResetBlockTachoCount(ports) SetOutput(ports, UpdateFlags, RESET_BLOCK_COUNT)
#define ResetRotationCount(ports) SetOutput(ports, UpdateFlags, RESET_ROTATION_COUNT)
#define ResetAllTachoCounts(ports) SetOutput(ports, UpdateFlags, RESET_ALL)

#define until(c) while(!(c))

#define FreeMemory() asm { GetFreeMemory(__RETVAL__) }
#define BatteryLevel() asm { GetBatteryLevel(__TMPWORD__) __RETURN__ __TMPWORD__ }
#define SoundState() asm { GetSoundState(__RETVAL__, __TMPBYTE__) }
#define SoundFlags() asm { GetSoundState(__TMPBYTE__, __RETVAL__) }
#define StopSound() asm { __setSoundState(SOUND_STATE_STOP, 0, __RETVAL__) }
#define PowerDown() asm { SetIOCtrlModuleValue(IOCtrlOffsetPowerOn, IOCTRL_POWERDOWN) }
#define RebootInFirmwareMode() asm { SetIOCtrlModuleValue(IOCtrlOffsetPowerOn, IOCTRL_BOOT) }
#define CurrentTick() asm { gettick __RETVAL__ }
#define FirstTick() asm { GetFirstTick(__RETVAL__) }
#define ResetSleepTimer() asm { acquire __KeepAliveMutex \
  syscall KeepAlive, __KeepAliveArgs \
  mov __RETVAL__, __KeepAliveArgs.Result \
  release __KeepAliveMutex }

#define IOMA(n) asm { mov __RETVAL__, n }
#define SetIOMA(n, val) asm { mov n, val }

#define ByteArrayToStr(a, s) asm { arrtostr s, a }
#define StrToByteArray(s, a) asm { strtoarr a, s }
#define ArrayLen(a) asm { arrsize __RETVAL__, a }
#define ArrayInit(a, val, cnt) asm { arrinit a, val, cnt }
#define ArraySubset(aout, asrc, idx, len) asm { arrsubset aout, asrc, idx, len }
#define ArrayBuild1(aout, src1) asm { arrbuild aout, src1 }
#define ArrayBuild2(aout, src1, src2) asm { arrbuild aout, src1, src2 }
#define ArrayBuild3(aout, src1, src2, src3) asm { arrbuild aout, src1, src2, src3 }
#define ArrayBuild4(aout, src1, src2, src3, src4) asm { arrbuild aout, src1, src2, src3, src4 }

#define GetLSInputBuffer(p, offset, cnt, data)  asm { GetIOMapBytes(LowSpeedModuleName, LowSpeedOffsetInBufBuf(p)+offset, cnt, data) }
#define GetLSOutputBuffer(p, offset, cnt, data) asm { GetIOMapBytes(LowSpeedModuleName, LowSpeedOffsetOutBufBuf(p)+offset, cnt, data) }
#define GetDisplayNormal(x, line, cnt, data) asm { GetIOMapBytes(DisplayModuleName, DisplayOffsetNormal(line,x), cnt, data) }
#define GetDisplayPopup(x, line, cnt, data) asm { GetIOMapBytes(DisplayModuleName, DisplayOffsetPopup(line,x), cnt, data) }
#define GetBTInputBuffer(offset, cnt, data) asm { GetIOMapBytes(CommModuleName, CommOffsetBtInBufBuf+offset, cnt, data) }
#define GetBTOutputBuffer(offset, cnt, data) asm { GetIOMapBytes(CommModuleName, CommOffsetBtOutBufBuf+offset, cnt, data) }
#define GetHSInputBuffer(offset, cnt, data) asm { GetIOMapBytes(CommModuleName, CommOffsetHsInBufBuf+offset, cnt, data) }
#define GetHSOutputBuffer(offset, cnt, data) asm { GetIOMapBytes(CommModuleName, CommOffsetHsOutBufBuf+offset, cnt, data) }
#define GetUSBInputBuffer(offset, cnt, data) asm { GetIOMapBytes(CommModuleName, CommOffsetUsbInBufBuf+offset, cnt, data) }
#define GetUSBOutputBuffer(offset, cnt, data) asm { GetIOMapBytes(CommModuleName, CommOffsetUsbOutBufBuf+offset, cnt, data) }
#define GetUSBPollBuffer(offset, cnt, data) asm { GetIOMapBytes(CommModuleName, CommOffsetUsbPollBufBuf+offset, cnt, data) }

#define BTDeviceName(p) asm { GetIOMapBytes(CommModuleName, CommOffsetBtDeviceTableName(p), 16, __STRRETVAL__) }
#define BTConnectionName(p) asm { GetIOMapBytes(CommModuleName, CommOffsetBtConnectTableName(p), 16, __STRRETVAL__) }
#define BTConnectionPinCode(p) asm { GetIOMapBytes(CommModuleName, CommOffsetBtConnectTablePinCode(p), 16, __STRRETVAL__) }
#define BrickDataName() asm { GetIOMapBytes(CommModuleName, CommOffsetBrickDataName, 16, __STRRETVAL__) }

#define GetBTDeviceAddress(p, data) asm { GetIOMapBytes(CommModuleName, CommOffsetBtDeviceTableBdAddr(p), 7, data) }
#define GetBTConnectionAddress(p, data) asm { GetIOMapBytes(CommModuleName, CommOffsetBtConnectTableBdAddr(p), 7, data) }
#define GetBrickDataAddress(data) asm { GetIOMapBytes(CommModuleName, CommOffsetBrickDataBdAddr, 7, data) }

#define SoundFrequency() asm { GetSoundFrequency(__TMPWORD__) __RETURN__ __TMPWORD__ }
#define SoundDuration() asm { GetSoundDuration(__TMPWORD__) __RETURN__ __TMPWORD__ }
#define SoundSampleRate() asm { GetSoundSampleRate(__TMPWORD__) __RETURN__ __TMPWORD__ }
#define SoundMode() asm { GetSoundMode(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define SoundVolume() asm { GetSoundVolume(__TMPBYTE__) __RETURN__ __TMPBYTE__ }

#define ButtonPressCount(b) asm { GetButtonPressCount(b, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define ButtonLongPressCount(b) asm { GetButtonLongPressCount(b, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define ButtonShortReleaseCount(b) asm { GetButtonShortReleaseCount(b, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define ButtonLongReleaseCount(b) asm { GetButtonLongReleaseCount(b, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define ButtonReleaseCount(b) asm { GetButtonReleaseCount(b, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define ButtonState(b) asm { GetButtonState(b, __TMPBYTE__) __RETURN__ __TMPBYTE__ }

#define CommandFlags() asm { GetCommandFlags(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define UIState() asm { GetUIState(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define UIButton() asm { GetUIButton(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define VMRunState() asm { GetVMRunState(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BatteryState() asm { GetBatteryState(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BluetoothState() asm { GetBluetoothState(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define UsbState() asm { GetUsbState(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define SleepTimeout() asm { GetSleepTimeout(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define SleepTimer() asm { GetSleepTimer(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define RechargeableBattery() asm { GetRechargeableBattery(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define Volume() asm { GetVolume(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define OnBrickProgramPointer() asm { GetOnBrickProgramPointer(__TMPBYTE__) __RETURN__ __TMPBYTE__ }

#define CustomSensorZeroOffset(p) asm { GetInCustomZeroOffset(p, __TMPWORD__) __RETURN__ __TMPWORD__ }
#define CustomSensorPercentFullScale(p) asm { GetInCustomPercentFullScale(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define CustomSensorActiveStatus(p) asm { GetInCustomActiveStatus(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define SensorBoolean(p) asm { GetInSensorBoolean(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define SensorDigiPinsDirection(p) asm { GetInDigiPinsDirection(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define SensorDigiPinsStatus(p) asm { GetInDigiPinsStatus(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define SensorDigiPinsOutputLevel(p) asm { GetInDigiPinsOutputLevel(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }

#define MotorPwnFreq() asm { GetOutPwnFreq(__TMPBYTE__) __RETURN__ __TMPBYTE__ }

#define LSInputBufferInPtr(p) asm { GetLSInputBufferInPtr(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSInputBufferOutPtr(p) asm { GetLSInputBufferOutPtr(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSInputBufferBytesToRx(p) asm { GetLSInputBufferBytesToRx(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSOutputBufferInPtr(p) asm { GetLSOutputBufferInPtr(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSOutputBufferOutPtr(p) asm { GetLSOutputBufferOutPtr(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSOutputBufferBytesToRx(p) asm { GetLSOutputBufferBytesToRx(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSMode(p) asm { GetLSMode(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSChannelState(p) asm { GetLSChannelState(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSErrorType(p) asm { GetLSErrorType(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSState() asm { GetLSState(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define LSSpeed() asm { GetLSSpeed(__TMPBYTE__) __RETURN__ __TMPBYTE__ }

#define DisplayEraseMask() asm { GetDisplayEraseMask(__TMPLONG__) __RETURN__ __TMPLONG__ }
#define DisplayUpdateMask() asm { GetDisplayUpdateMask(__TMPLONG__) __RETURN__ __TMPLONG__ }
#define DisplayDisplay() asm { GetDisplayDisplay(__TMPLONG__) __RETURN__ __TMPLONG__ }
#define DisplayFlags() asm { GetDisplayFlags(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define DisplayTextLinesCenterFlags() asm { GetDisplayTextLinesCenterFlags(__TMPBYTE__) __RETURN__ __TMPBYTE__ }

#define BTDeviceClass(p) asm { GetBTDeviceClass(p, __TMPLONG__) __RETURN__ __TMPLONG__ }
#define BTDeviceStatus(p) asm { GetBTDeviceStatus(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTConnectionClass(p) asm { GetBTConnectionClass(p, __TMPLONG__) __RETURN__ __TMPLONG__ }
#define BTConnectionHandleNum(p) asm { GetBTConnectionHandleNum(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTConnectionStreamStatus(p) asm { GetBTConnectionStreamStatus(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTConnectionLinkQuality(p) asm { GetBTConnectionLinkQuality(p, __TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BrickDataBluecoreVersion() asm { GetBrickDataBluecoreVersion(__TMPWORD__) __RETURN__ __TMPWORD__ }
#define BrickDataBtStateStatus() asm { GetBrickDataBtStateStatus(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BrickDataBtHardwareStatus() asm { GetBrickDataBtHardwareStatus(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BrickDataTimeoutValue() asm { GetBrickDataTimeoutValue(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTInputBufferInPtr() asm { GetBTInputBufferInPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTInputBufferOutPtr() asm { GetBTInputBufferOutPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTOutputBufferInPtr() asm { GetBTOutputBufferInPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTOutputBufferOutPtr() asm { GetBTOutputBufferOutPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define HSInputBufferInPtr() asm { GetHSInputBufferInPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define HSInputBufferOutPtr() asm { GetHSInputBufferOutPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define HSOutputBufferInPtr() asm { GetHSOutputBufferInPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define HSOutputBufferOutPtr() asm { GetHSOutputBufferOutPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define USBInputBufferInPtr() asm { GetUSBInputBufferInPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define USBInputBufferOutPtr() asm { GetUSBInputBufferOutPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define USBOutputBufferInPtr() asm { GetUSBOutputBufferInPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define USBOutputBufferOutPtr() asm { GetUSBOutputBufferOutPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define USBPollBufferInPtr() asm { GetUSBPollBufferInPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define USBPollBufferOutPtr() asm { GetUSBPollBufferOutPtr(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTDeviceCount() asm { GetBTDeviceCount(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define BTDeviceNameCount() asm { GetBTDeviceNameCount(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define HSFlags() asm { GetHSFlags(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define HSSpeed() asm { GetHSSpeed(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define HSState() asm { GetHSState(__TMPBYTE__) __RETURN__ __TMPBYTE__ }
#define USBState() asm { GetUSBState(__TMPBYTE__) __RETURN__ __TMPBYTE__ }

#define SetSoundFrequency(n) asm { __setSoundFrequency(n) }
#define SetSoundDuration(n) asm { __setSoundDuration(n) }
#define SetSoundSampleRate(n) asm { __setSoundSampleRate(n) }
#define SetSoundFlags(n) asm { __setSoundFlags(n) }
#define SetSoundState(n) asm { __setSoundState(n) }
#define SetSoundMode(n) asm { __setSoundMode(n) }
#define SetSoundVolume(n) asm { __setSoundVolume(n) }

#define SetButtonPressCount(b, n) asm { __setButtonPressCount(b, n) }
#define SetButtonLongPressCount(b, n) asm { __setButtonLongPressCount(b, n) }
#define SetButtonShortReleaseCount(b, n) asm { __setButtonShortReleaseCount(b, n) }
#define SetButtonLongReleaseCount(b, n) asm { __setButtonLongReleaseCount(b, n) }
#define SetButtonReleaseCount(b, n) asm { __setButtonReleaseCount(b, n) }
#define SetButtonState(b, n) asm { __setButtonState(b, n) }

#define SetCommandFlags(n) asm { __setCommandFlags(n) }
#define SetUIState(n) asm { __setUIState(n) }
#define SetUIButton(n) asm { __setUIButton(n) }
#define SetVMRunState(n) asm { __setVMRunState(n) }
#define SetBatteryState(n) asm { __setBatteryState(n) }
#define SetBluetoothState(n) asm { __setBluetoothState(n) }
#define SetUsbState(n) asm { __setUsbState(n) }
#define SetSleepTimeout(n) asm { __setSleepTimeout(n) }
#define SetSleepTimer(n) asm { __setSleepTimer(n) }
#define SetVolume(n) asm { __setVolume(n) }
#define SetOnBrickProgramPointer(n) asm { __setOnBrickProgramPointer(n) }
#define ForceOff(n) asm { __forceOff(n) }

#define SetCustomSensorZeroOffset(p, n) asm { __setInCustomZeroOffset(p, n) }
#define SetCustomSensorPercentFullScale(p, n) asm { __setInCustomPercentFullScale(p, n) }
#define SetCustomSensorActiveStatus(p, n) asm { __setInCustomActiveStatus(p, n) }
#define SetSensorBoolean(p, n) asm { __setInSensorBoolean(p, n) }
#define SetSensorDigiPinsDirection(p, n) asm { __setInDigiPinsDirection(p, n) }
#define SetSensorDigiPinsStatus(p, n) asm { __setInDigiPinsStatus(p, n) }
#define SetSensorDigiPinsOutputLevel(p, n) asm { __setInDigiPinsOutputLevel(p, n) }

#define SetMotorPwnFreq(n) asm { __setOutPwnFreq(n) }

#define SetLSInputBuffer(p, offset, cnt, data) asm { SetIOMapBytes(LowSpeedModuleName, LowSpeedOffsetInBufBuf(p)+offset, cnt, data) }
#define SetLSInputBufferInPtr(p, n) asm { __setLSInputBufferInPtr(p, n) }
#define SetLSInputBufferOutPtr(p, n) asm { __setLSInputBufferOutPtr(p, n) }
#define SetLSInputBufferBytesToRx(p, n) asm { __setLSInputBufferBytesToRx(p, n) }
#define SetLSOutputBuffer(p, offset, cnt, data) asm { SetIOMapBytes(LowSpeedModuleName, LowSpeedOffsetOutBufBuf(p)+offset, cnt, data) }
#define SetLSOutputBufferInPtr(p, n) asm { __setLSOutputBufferInPtr(p, n) }
#define SetLSOutputBufferOutPtr(p, n) asm { __setLSOutputBufferOutPtr(p, n) }
#define SetLSOutputBufferBytesToRx(p, n) asm { __setLSOutputBufferBytesToRx(p, n) }
#define SetLSMode(p, n) asm { __setLSMode(p, n) }
#define SetLSChannelState(p, n) asm { __setLSChannelState(p, n) }
#define SetLSErrorType(p, n) asm { __setLSErrorType(p, n) }
#define SetLSState(n) asm { __setLSState(n) }
#define SetLSSpeed(n) asm { __setLSSpeed(n) }

#define SetDisplayEraseMask(n) asm { __setDisplayEraseMask(n) }
#define SetDisplayUpdateMask(n) asm { __setDisplayUpdateMask(n) }
#define SetDisplayDisplay(n) asm { __setDisplayDisplay(n) }
#define SetDisplayFlags(n) asm { __setDisplayFlags(n) }
#define SetDisplayTextLinesCenterFlags(n) asm { __setDisplayTextLinesCenterFlags(n) }
#define SetDisplayNormal(x, line, cnt, data) asm { SetIOMapBytes(DisplayModuleName, DisplayOffsetNormal(line,x), cnt, data) }
#define SetDisplayPopup(x, line, cnt, data) asm { SetIOMapBytes(DisplayModuleName, DisplayOffsetPopup(line,x), cnt, data) }

#define SetBTDeviceName(p, str) asm { SetIOMapBytes(CommModuleName, CommOffsetBtDeviceTableName(p), 16, str) }
#define SetBTDeviceAddress(p, addr) asm { SetIOMapBytes(CommModuleName, CommOffsetBtDeviceTableBdAddr(p), 7, addr) }
#define SetBTConnectionName(p, str) asm { SetIOMapBytes(CommModuleName, CommOffsetBtConnectTableName(p), 16, str) }
#define SetBTConnectionPinCode(p, code) asm { SetIOMapBytes(CommModuleName, CommOffsetBtConnectTablePinCode(p), 16, code) }
#define SetBTConnectionAddress(p, addr) asm { SetIOMapBytes(CommModuleName, CommOffsetBtConnectTableBdAddr(p), 7, addr) }
#define SetBrickDataName(str) asm { SetIOMapBytes(CommModuleName, CommOffsetBrickDataName, 16, str) }
#define SetBrickDataAddress(p, addr) asm { SetIOMapBytes(CommModuleName, CommOffsetBrickDataBdAddr, 7, addr) }
#define SetBTDeviceClass(p, n) asm { __setBTDeviceClass(p, n) }
#define SetBTDeviceStatus(p, n) asm { __setBTDeviceStatus(p, n) }
#define SetBTConnectionClass(p, n) asm { __setBTConnectionClass(p, n) }
#define SetBTConnectionHandleNum(p, n) asm { __setBTConnectionHandleNum(p, n) }
#define SetBTConnectionStreamStatus(p, n) asm { __setBTConnectionStreamStatus(p, n) }
#define SetBTConnectionLinkQuality(p, n) asm { __setBTConnectionLinkQuality(p, n) }
#define SetBrickDataBluecoreVersion(n) asm { __setBrickDataBluecoreVersion(n) }
#define SetBrickDataBtStateStatus(n) asm { __setBrickDataBtStateStatus(n) }
#define SetBrickDataBtHardwareStatus(n) asm { __setBrickDataBtHardwareStatus(n) }
#define SetBrickDataTimeoutValue(n) asm { __setBrickDataTimeoutValue(n) }
#define SetBTInputBuffer(offset, cnt, data) asm { SetIOMapBytes(CommModuleName, CommOffsetBtInBufBuf+offset, cnt, data) }
#define SetBTInputBufferInPtr(n) asm { __setBTInputBufferInPtr(n) }
#define SetBTInputBufferOutPtr(n) asm { __setBTInputBufferOutPtr(n) }
#define SetBTOutputBuffer(offset, cnt, data) asm { SetIOMapBytes(CommModuleName, CommOffsetBtOutBufBuf+offset, cnt, data) }
#define SetBTOutputBufferInPtr(n) asm { __setBTOutputBufferInPtr(n) }
#define SetBTOutputBufferOutPtr(n) asm { __setBTOutputBufferOutPtr(n) }
#define SetHSInputBuffer(offset, cnt, data) asm { SetIOMapBytes(CommModuleName, CommOffsetHsInBufBuf+offset, cnt, data) }
#define SetHSInputBufferInPtr(n) asm { __setHSInputBufferInPtr(n) }
#define SetHSInputBufferOutPtr(n) asm { __setHSInputBufferOutPtr(n) }
#define SetHSOutputBuffer(offset, cnt, data) asm { SetIOMapBytes(CommModuleName, CommOffsetHsOutBufBuf+offset, cnt, data) }
#define SetHSOutputBufferInPtr(n) asm { __setHSOutputBufferInPtr(n) }
#define SetHSOutputBufferOutPtr(n) asm { __setHSOutputBufferOutPtr(n) }
#define SetUSBInputBuffer(offset, cnt, data) asm { SetIOMapBytes(CommModuleName, CommOffsetUsbInBufBuf+offset, cnt, data) }
#define SetUSBInputBufferInPtr(n) asm { __setUSBInputBufferInPtr(n) }
#define SetUSBInputBufferOutPtr(n) asm { __setUSBInputBufferOutPtr(n) }
#define SetUSBOutputBuffer(offset, cnt, data) asm { SetIOMapBytes(CommModuleName, CommOffsetUsbOutBufBuf+offset, cnt, data) }
#define SetUSBOutputBufferInPtr(n) asm { __setUSBOutputBufferInPtr(n) }
#define SetUSBOutputBufferOutPtr(n) asm { __setUSBOutputBufferOutPtr(n) }
#define SetUSBPollBuffer(offset, cnt, data) asm { SetIOMapBytes(CommModuleName, CommOffsetUsbPollBufBuf+offset, cnt, data) }
#define SetUSBPollBufferInPtr(n) asm { __setUSBPollBufferInPtr(n) }
#define SetUSBPollBufferOutPtr(n) asm { __setUSBPollBufferOutPtr(n) }
#define SetBTDeviceCount(n) asm { __setBTDeviceCount(n) }
#define SetBTDeviceNameCount(n) asm { __setBTDeviceNameCount(n) } 
#define SetHSFlags(n) asm { __setHSFlags(n) }
#define SetHSSpeed(n) asm { __setHSSpeed(n) }
#define SetHSState(n) asm { __setHSState(n) }
#define SetUSBState(n) asm { __setUSBState(n) }


#define CreateFile(fname, fsize, handle) asm { __createFile(fname, fsize, handle, __RETVAL__) }
#define OpenFileAppend(fname, fsize, handle) asm { __openFileAppend(fname, fsize, handle, __RETVAL__) }
#define OpenFileRead(fname, fsize, handle) asm { __openFileRead(fname, fsize, handle, __RETVAL__) }
#define CloseFile(handle) asm { __closeFile(handle, __RETVAL__) }
#define ResolveHandle(fname, handle, writeable) asm { __resolveHandle(fname, handle, writeable, __RETVAL__) }
#define RenameFile(oldname, newname) asm { __renameFile(oldname, newname, __RETVAL__) }
#define DeleteFile(fname) asm { __deleteFile(fname, __RETVAL__) }

#define Read(handle, n) asm { __readValue(handle, n, __RETVAL__) }
#define ReadLn(handle, n) asm { __readLnValue(handle, n, __RETVAL__) }
#define ReadBytes(handle, len, buf) asm { __readBytes(handle, len, buf, __RETVAL__) }

#define Write(handle, n) asm { __writeValue(handle, n, __RETVAL__) }
#define WriteLn(handle, n) asm { __writeLnValue(handle, n, __RETVAL__) }
#define WriteString(handle, str, cnt) asm { __writeBytes(handle, str, cnt, __RETVAL__) }
#define WriteLnString(handle, str, cnt) asm { __writeLnBytes(handle, str, cnt, __RETVAL__) }
#define WriteBytes(handle, buf, cnt) asm { __writeBytes(handle, buf, cnt, __RETVAL__) }
#define WriteBytesEx(handle, len, buf) asm { __writeBytesEx(handle, len, buf, __RETVAL__) }

#define SendMessage(queue, msg) asm { __sendMessage(queue, msg, __RETVAL__) }
#define ReceiveMessage(queue, clear, msg) asm { __receiveMessage(queue, clear, msg, __RETVAL__) }

#define LowspeedStatus(port, bready) asm { __lowspeedStatus(port, bready, __RETVAL__) }
#define LowspeedWrite(port, retlen, buffer) asm { __lowspeedWrite(port, retlen, buffer, __RETVAL__) }
#define LowspeedRead(port, buflen, buffer) asm { __lowspeedRead(port, buflen, buffer, __RETVAL__) }

#define BluetoothStatus(conn) asm { __bluetoothStatus(conn, __RETVAL__) }
#define BluetoothWrite(conn, buffer) asm { __bluetoothWrite(conn, buffer, __RETVAL__) }

#define I2CBytes(port, inbuf, count, outbuf) asm { ReadI2CBytes(port, inbuf, count, outbuf, __RETVAL__) }

#endif // NXCDEFS_H