Last Update:2005/10/07

Modify history
------Changes from the Beta1
* A waitF flag was added to four APIs.
  BOOL ExternalControl( BOOL waitF = TRUE );
  BOOL InternalControl( BOOL waitF = TRUE );
  BOOL SetRobotObjectMode( E_ROBOTOBJECT eService, E_ROBOTOBJECTMODE eMode, BOOL waitF = TRUE );
  int DoRobotFunction( E_ROBOTFUNCTION eFunction, BOOL waitF = TRUE );
* GetRobotDesign() returns DESIGN_ERS7 all the time.
* IsRemote() function was added.
* GainON() and GainOFF() functions were deleted.
* SetClock() is functional. UTC can be set.
* Deleted DISCONNECT_MODE_GAINOFF from VAIBODEF.h
* Added BUSY notify when switching between Connect <-> Remote
  #define VAIBO_CONNECT_BUSY -23 // connection is busy switching modes
  #define VAIBO_COMM_BUSY -38    // command busy
* Added an Error code that means the command is restricted
  #define VAIBO_COMM_RESTRICTION  -37 // restricted command
* Added AudioSendWAVFile()
------Changes from the Release1
* Errata GetRobotObject() --> GetRobotObjectMode()
* Added functions which are extended in AIBO MIND 3
  int CVAIBO::ImageGetInfo(long *openrTime, int *imageType, int *num, int *size );
  int CVAIBO::ImageGetRecogData(BlockInfo *blockInfo, unsigned char *buff, int size );
* Connect() can be interrupted by Disconnect() before a connection is established.

[*] Error code list


VAIBO_NOERROR           0               // No error
VAIBO_READY             1               // Ready to send command/data
VAIBO_NOTSTART          -10             // Not started
VAIBO_WORKING           -11             // Already working
VAIBO_MEMERR            -12             // Memory allocation fail
VAIBO_SERVERSTOP        -13             // Server stopped
VAIBO_PORT_NOTOPEN      -20             // Cannot open communication port
VAIBO_PORT_OPENERR      -21             // Error opening communication port
VAIBO_NSM_ERROR         -22             // NSM starting error
VAIBO_CONNECT_BUSY      -23             // Connection processing 
VAIBO_COMM_NOREPLY      -30             // No reply from the command
VAIBO_COMM_COMMERR      -31             // Command error
VAIBO_COMM_PAUSE        -32             // Command paused
VAIBO_COMM_WAIT         -33             // Command waiting
VAIBO_COMM_IGNORE       -34             // Command ignored
VAIBO_COMM_TIMEOUT      -35             // Command timeout
VAIBO_COMM_LOCK         -36             // Server locked
VAIBO_COMM_RESTRICTION  -37             // Command restricted
VAIBO_COMM_BUSY         -38             // Command busy
VAIBO_FILE_SEADERR      -42             // File send error
VAIBO_FILE_OPENERR      -43             // File open error
VAIBO_FILE_MAKEERR      -44             // File create error
VAIBO_FILE_READERR      -45             // File read error
VAIBO_FILE_WRITEERR     -46             // File write error
VAIBO_LIMIT_MWCID       -50             // Cannot use MWCID
VAIBO_VPRFILE_NOEXIST   -60             // VPR file is not registered

IMAGETP_INITERR         -101            // Initialization error
IMAGETP_OPENERR         -102            // Cannot open
IMAGETP_NOTOPEN         -103            // It is not opened 
IMAGETP_MEMERR          -104            // Memory allocation fail
IMAGETP_CREATEERR       -105            // Create error
IMAGETP_DATAERR         -106            // Data error
IMAGETP_SAVEERR         -107            // Save error

IMAGETP_STATE_ERR       -110            // Unexpected error
IMAGETP_WORKING         -120            // Already working

IMAGETP_STATE_CLOSE     -150            // CLOSE
IMAGETP_STATE_INIT      -151            // Finished INIT
IMAGETP_STATE_OPEN      -152            // Finished OPEN
IMAGETP_STATE_SERVICE   -153            // Start SERVICE
IMAGETP_STATE_PAUSE     -154            // Pause
IMAGETP_STATE_PLAY      -155            // Data transmission

AUDIOTP_INITERR         -201            // Initialization error
AUDIOTP_OPENERR         -202            // Open error
AUDIOTP_NOTOPEN         -203            // It is not opened
AUDIOTP_MEMERR          -204            // Memory allocation fail
AUDIOTP_CREATEERR       -205            // Create error
AUDIOTP_DEVICEERR       -206            // Device open error
AUDIOTP_SENDERR         -207            // Sending data error

AUDIOTP_STATE_ERR       -210            // Unexpected error
AUDIOTP_WORKING         -220            // Already working

AUDIOTP_STATE_CLOSE     -250            // CLOSE
AUDIOTP_STATE_INIT      -251            // Finished INIT
AUDIOTP_STATE_OPEN      -252            // Finished OPEN
AUDIOTP_STATE_SERVICE   -253            // Start SERVICE
AUDIOTP_STATE_PAUSE     -254            // Pause
AUDIOTP_STATE_PLAY      -255            // Data transmission

SENSORTP_STATE_ERR      -310            // Unexpected error
SENSORTP_WORKING        -320            // Already working

SENSORTP_STATE_CLOSE    -350            // CLOSE
SENSORTP_STATE_SERVICE  -351            // Start SERVICE
SENSORTP_STATE_PAUSE    -352            // Pause
SENSORTP_STATE_PLAY     -353            // Data transmission

FTP_STATE_ERR           -410            // Unexpected error
FTP_WORKING             -420            // Already working

+ CVAIBO
[Function] Constructor
[Return] void
[Description] Initialize internal objects and variables.
[Usage]
CVAIBO::CVAIBO(
        HWND parent )   // Windows handle that wants to receive Windows Messages


+ ~CVAIBO()
[Function] Destructor
[Return] void
[Description] Destruct internal objects and variables.
[Usage] 

CVAIBO::~CVAIBO()


+ Connect
[Function] Connect to AIBO via network
[Return] Success: AIBO reference ID   Fail: Error code (see Error code list at the top of this text)
[Description] 
        - Initialize shared data access area
        - Send connection request to the VAIBOServer
        - Start to connect to AIBO
        WM_VAIBO_CONNECT Windows Message is sent when the connection is first made.
        WM_VAIBO_CLIENT_UPDATE is sent when the client application has already 
        connected to AIBO.
        If you want to set an ID and Password on AIBO, please create
        /OPEN-R/APP/DATA/P/OWNER.TXT
        as a text file on the Memory Stick Media and edit it to contain the following 2 lines: 
        OWNER=aibo
        OWNER_PASSWORD=aibo
        aibo and aibo are examples.
        Connect() can be interrupted by Disconnect() before a connection is
        established.

[Usage] 

int CVAIBO::Connect( 
                    const char *szIPAddr,   // AIBO's IP address. The format is "0.0.0.0" 
                    const char *ID = NULL,  // AIBO User ID
                    const char *PWD = NULL) // AIBO User Password


+ Disconnect
[Function] Disconnect the network from AIBO
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Disconnect the network from AIBO.
            If another client application is connected, the connection is kept.
[Usage] 

int CVAIBO::Disconnect( void )


+ SetLock
[Function] Lock / Unlock VAIBOServer
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Set Lock / Unlock VAIBOServer control authority
            If a client application locks the VAIBOServer, other applications 
            cannot send any commands through the VAIBOServer.
[Usage] 

int CVAIBO::SetLock( 
                    BOOL bLock )    // TRUE:Lock  FALSE:Unlock


+ GetProductID
[Function] Get AIBO's Product ID
[Return] void
[Description] Get the connected AIBO's product ID.
            The product ID is a unique parameter for each AIBO.
[Usage] 

void CVAIBO::GetProductID( 
                         ProductInfo *pInfo )   // Pointer to the ProductID Structure


+ GetRemoteMACAddress
[Function] Get AIBO's MAC address
[Return] void
[Description] Get the connected AIBO's MAC address.
            ERS-7 has a built-in network card, so the MAC address is a unique parameter for each AIBO(ERS-7).
[Usage] 

void CVAIBO::GetRemoteMACAddress( 
                        MACAddressInfo* pInfo ) // Pointer to the stored MAC address


+ GetRobotDesign
[Function] Get AIBO's Robot design
[Return] Robot design
[Description] Get the Robot design of the connected AIBO.
             Only the ERS-7 is supported by AIBO Remote Framework, so the Robot design is 
             a constant integer (DESIGN_ERS7).
[Usage] 

int CVAIBO::GetRobotDesign( void )


+ RequestNetService
[Function] Request to start the network service
[Return] Success: TRUE    Fail: FLASE
[Description] Request to start the network service.
            When the service is started, WM_VAIBO_SEMANTIFCS(wParam: SEM_START, lParam: START_XXXTP) is sent.
[Usage] 
BOOL CVAIBO::RequestNetService( 
                     int service ) // Service ID:FTP_ID, SENSOR_ID, IMAGE_ID, AUDIO_IN_ID, NETAUDIO_ID


+ SendCmd
[Function] Send a command to control AIBO
[Return] Success: VAIBO_NOERROR or command_ID      Fail: Error code (see Error code list at the top of this text)
[Description] Send a command to control AIBO
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID
[Usage] 

int CVAIBO::SendCmd(
            int cmd,      // APPCommand (The list is in VAIBODef.h)
            BOOL waitF,   // Wait flag
            int nParam1,  // APPCommand parameter1 (See VAIBODef.h)
            int nParam2,  // APPCommand parameter2 (See VAIBODef.h)
            int nParam3,  // No use
            int nParam4 ) // No use


The cmd, nParam1, and nParam2 parameters are defined in VAIBODef.h.
The cmd parameter is defined as a constant macro that begins with APPCMD_.
The nParam1 and nParam2 parameters are defined after the APPCMD_ in VAIBODef.h.


+ PlayMotion
[Function] Play a motion that is categorized with Large/Middle/Small/Level values.
[Return]  Success: VAIBO_NOERROR or command_ID        Fail: Error code (see Error code list at the top of this text)
[Description] Play a motion that is categorized with Large/Middle/Small/Level values.
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
            The client application should be aware of the current posture and the motion's start posture. A different start posture may result in a different motion,
            even if the LMS command is the same.

[Usage] 

int CVAIBO::PlayMotion( 
                        LPARAM lmsCmd,    // LMS command ( L_ID << 24 ) | ( M_ID << 16 ) | ( S_ID << 8 ) | ( Level )
                        BOOL exF,         // Extension flag (See MWCID and LMS command list)
                        BOOL waitF,       // Wait flag
                        BOOL infinityF  ) // Infinity command flag (See MWCID and LMS command list)


+ PlayMotionWithAngle
[Function] Play a motion that is categorized with Large/Middle/Small/Level values and angles.
[Return]  Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Same as PlayMotion().
[Usage] 

int CVAIBO::PlayMotionWithAngle( 
                        LPARAM lmsCmd,     // LMS command ( L_ID << 24 ) | ( M_ID << 16 ) | ( S_ID << 8 ) | ( Level )
                        int angleH,        // Horizontal angle (Degree)
                        int angleV,        // Vertical angle (Degree)
                        BOOL exF,          //  Extension flag (See MWCID and LMS command list)
                        BOOL waitF,             //  Wait flag
                        BOOL infinityF,         // Infinity command flag (See MWCID and LMS command list)
                        unsigned int unTarget ) // TargetID(PINK, BOLL, BONE, FACE...) 


+ IsConnect
[Function] Get the connection status of VAIBOServer to AIBO.
[Return] FALSE: Disconnecting    TRUE: Connecting
[Description] Get the connection status of VAIBOServer to AIBO.
[Usage] 

BOOL CVAIBO::IsConnect( void )


+ IsLock
[Function] Get the lock/unlock status of VAIBOServer
[Return] FALSE: Unlock   TRUE: Lock
[Description] Get the lock/unlock status of VAIBOServer.
[Usage]  

BOOL CVAIBO::IsLock( void )


+ GetStateSensorTP
[Function] Get the status of SensorTP
[Return] SENSORTP_STATE_xxx  (See VAIBODef.h)
[Description] Get the status of SensorTP.
[Usage]  

int CVAIBO::GetStateSensorTP( void )


+ GetStateImageTP
[Function] Get the status of ImageTP
[Return] IMAGETP_STATE_xxx  (See VAIBODef.h)
[Description] Get the status of ImageTP
[Usage] 

int CVAIBO::GetStateImageTP( void )


+ GetStateAudioTP
[Function] Get the status of AudioTP
[Return] AUDIOTP_STATE_xxx  (See VAIBODef.h)
[Description] Get the status of AudioTP
[Usage]  

int CVAIBO::GetStateAudioTP( void )


+ GetStateNetAudio
[Function] Get the status of NetAudio
[Return] AUDIOTP_STATE_xxx (See VAIBODef.h)
[Description] Get the status of NetAudio
[Usage] 

int CVAIBO::GetStateNetAudio( void )


+ IsFTPOpen
[Function] Get the status of the FTP service (Open/Close)
[Return] FALSE: FTP is closed   TRUE: FTP is opened
[Description] Get the status of the FTP service (Open/Close)
[Usage] 

BOOL CVAIBO::IsFTPOpen( void )


+ GetInputSemantics
[Function] Get InputSemantics data
[Return] void
[Description] Get InputSemantics data
[Usage] 

void CVAIBO::GetInputSemantics( 
                  int *semID,            // Semantics data ID
                  int *pSubInfoArray,    // Semantics data sub-information(SubInfo)
                  int *pEtcInfoArray )   // Semantics data etc-information(EtcInfo)
                                            (the elements are ComStatus, Level, Pitch, Position) 


+ GetSemInfo
[Function] Get Semantics Information
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Get Semantics Information
[Usage]  

int CVAIBO::GetSemInfo( 
                      int *pInfoArray ) // Array of semantics SubInfo


+ SensorTransferStart
[Function] Start SensorTP sensor data transmission
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Start SensorTP sensor data transmission
[Usage] 

int CVAIBO::SensorTransferStart( void )


+ SensorTransferStop
[Function] Stop SensorTP sensor data transmission
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Stop SensorTP sensor data transmission
[Usage]  

int CVAIBO::SensorTransferStop( void )


+ SensorGetData
[Function] Get SensorTP data (sensor data)
[Return] void
[Description] Get SensorTP data (sensor data)
        Memory area (SensorRec * numOfData) must be allocated before calling this function.
[Usage] 

void CVAIBO::SensorGetData( 
               int numOfData,           // Number of Sensor data
               SensorRecP pSensorRec )  // buffer for transmitted sensor data (should be allocated before calling)

+ SensorSetSkipRate
[Function] Set the skip rate for SensorTP data transmission.
[Return] void
[Description] Set the skip rate for SensorTP data transmission.
[Usage]  

void CVAIBO::SensorSetSkipRate( 
                int skipCount ) // SensorTP skip rate


+ SensorGetSkipRate
[Function] Get the skip rate for SensorTP data transmission.
[Return] skip rate
[Description] Get the skip rate for SensorTP data transmission.
[Usage]  

int CVAIBO::SensorGetSkipRate( void )


+ ImageInit
[Function] Initialize Image object
[Return] IMAGETP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Create objects for IMAGE and initialize internal variables of the objects.
[Usage] 

int CVAIBO::ImageInit( void )


+ ImageOpen
[Function] Start receiving image data (camera data)
[Return] IMAGETP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Open the network port and start receiving image data (camera data)
[Usage]  

int CVAIBO::ImageOpen( void )


+ ImageClose
[Function] Stop receiving image data
[Return] IMAGETP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Close the network port and stop receiving image data.
[Usage] 

int CVAIBO::ImageClose( void )

+ ImagePause
[Function] Pause receiving image data
[Return] IMAGETP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Pause receiving image data.
[Usage]  

int CVAIBO::ImagePause( void )


+ ImageResume
[Function] Resume receiving image data
[Return] IMAGETP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Resume receiving image data
[Usage]  

int CVAIBO::ImageResume( void )


+ ImageGetData
[Function] Get image data
[Return] IMAGETP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Get image data
[Usage] 

int CVAIBO::ImageGetData( 
                    unsigned char *buff,  // buffer for image data (the buffer should be allocated)
                    int size )            // data size (size is retrieved from the parameter with WM_IMAGETP_UPDATE)


+ ImageSetWindowHandle
[Function] Set window handle to show the image
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Automatically show updated images (movie) in the specified window. The window area must fit the image size.
[Usage]  

int CVAIBO::ImageSetWindowHandle(
                                  HWND wnd,      // Window handle to display the image (movie)
                                  HWND wndDlg)   // Parent window handle

+ ImageOutputCaptureData
[Function] Save a picture as a bitmap file 
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Save a picture as a bitmap file
[Usage]  

int CVAIBO::ImageOutputCaptureData(
                                    LPCTSTR strOutputFileName)  // Bitmap file name


+ ImageGetFrameRate
[Function] Get the frame rate of image transmission
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Get the frame rate of image transmission
[Usage]  

int CVAIBO::ImageGetFrameRate()


+ CameraSetModeDefault
[Function] Set the camera mode to default.
[Return] Success: TRUE      Fail: FALSE
[Description] Set the camera mode to default.
[Usage] 
 
BOOL    CVAIBO::CameraSetModeDefault()


+ CameraSetModeManual
[Function] Set the camera mode to manual settings.
[Return] Success: TRUE    Fail: FALSE
[Description] Set the camera mode to manual settings.
[Usage]  

BOOL    CVAIBO::CameraSetModeManual( 
                                    int nShutterSpeed,  // Shutter speed
                                    int nExposure )     // Exposure


+ CameraSetParamExposure
[Function] Set camera parameter (Exposure)
[Return] Success: TRUE    Fail: FALSE
[Description] Set camera parameter (Exposure)
[Usage]  

BOOL    CVAIBO::CameraSetParamExposure( 
                                       int nExposure )  // Exposure


+ CameraSetParamShutterSpeed
[Function] Set camera parameter (Shutter speed)
[Return] Success: TRUE    Fail: FALSE
[Description] Set camera parameter (Shutter speed)
[Usage]  

BOOL    CVAIBO::CameraSetParamShutterSpeed( 
                                          int nShutterSpeed )  // Shutter speed


+ CameraSetModeAEAWB
[Function] Set the camera mode to AE(Auto Exposure) and AWB(Auto White Balance)
[Return] Success: TRUE    Fail: FALSE
[Description] Set the camera mode to AE(Auto Exposure) and AWB(Auto White Balance)
[Usage]  

BOOL    CVAIBO::CameraSetModeAEAWB()


+ AudioInit
[Function] Initialize Audio objects
[Return] AUDIOTP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Create objects for Audio and initialize internal parameters of the objects
[Usage]  

int CVAIBO::AudioInit( void )


+ AudioGetOpen
[Function] Start getting audio data
[Return] AUDIOTP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Open the network port and start getting audio data.
       The audio data formats are ATP16K_XXX and ATP8K_XXX which are defined in VAIBODef.h
[Usage]  

int CVAIBO::AudioGetOpen( 
                         int mode )  // audio data format (Defined in VAIBODef.h)

+ AudioSendOpen
[Function]  Start sending audio data
[Return]  AUDIOTP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Open the network port and start sending audio data.
       The following audio data formats are defined in VAIBODef.h
        ATP16K_16BIT_MONO_MIX       3           // 16kHz,16Bit,Mono Mix
        ATP8K_16BIT_MONO_MIX        7           // 8kHz,16Bit,Mono Mix
        ATP16K_8BIT_MONO_MIX        11          // 16kHz,8Bit,Mono Mix
        ATP8K_8BIT_MONO_MIX         15          // 8kHz,8Bit,Mono Mix
[Usage]  

int CVAIBO::AudioSendOpen( 
                          int mode )  // audio data format (Defined in VAIBODef.h)


+ AudioSendSetMode
[Function] Change sending audio mode
[Return] AUDIOTP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Change sending audio mode.
       The following audio data formats are defined in VAIBODef.h
        ATP16K_16BIT_MONO_MIX       3           // 16kHz,16Bit,Mono Mix
        ATP8K_16BIT_MONO_MIX        7           // 8kHz,16Bit,Mono Mix
        ATP16K_8BIT_MONO_MIX        11          // 16kHz,8Bit,Mono Mix
        ATP8K_8BIT_MONO_MIX         15          // 8kHz,8Bit,Mono Mix
[Usage]  

int CVAIBO::AudioSendSetMode( 
                             int nMode )  // audio data format (Defined in VAIBODef.h)


+ AudioClose
[Function]  Close the network port and stop getting audio data.
[Return] AUDIOTP_NOERROR or Error code (see Error code list at the top of this text)
[Description]  Close the network port and stop getting audio data.
[Usage]  

int CVAIBO::AudioClose( void )


+ AudioGetData
[Function] Get audio data
[Return] AUDIOTP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Get audio data
[Usage]  

int CVAIBO::AudioGetData( 
                         unsigned char *buff,  // buffer that stores data (the buffer should be allocated)
                         int size )            // data size (size is retrieved from the parameter with WM_AUDIOTP_UPDATE)


+ AudioSendData
[Function] Send audio data
[Return] AUDIOTP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Send audio data
[Usage] 

int CVAIBO::AudioSendData( 
                          char *buff,  // Audio data buffer
                          int size )   // size of data which is sent to AIBO


+ AudioSendWAVFile
[Function] Send audio data (file)
[Return] AUDIOTP_NOERROR or Error code (see Error code list at the top of this text)
[Description] Send audio data (file)
[Usage] 

int CVAIBO::AudioSendWAVFile( 
                           LPCTSTR szFile )  // Audio data file name (full path)


+ AudioSendPlay
[Function] Start playing audio
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Start playing audio. This function will return when audio play starts.
[Usage] 

int CVAIBO::AudioSendPlay( 
                          BOOL isKutipaku )  // TRUE:with moving mouth    FALSE:without moving mouth


+ AudioSendStop
[Function] Stop playing audio
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Stop playing audio
[Usage] 

int CVAIBO::AudioSendStop( void )


+ FTPMMSendWAVFile
[Function] Send WAVE file by MMFTP
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Send WAVE file by MMFTP. WM_VAIBO_SEMANTICS(wParam: SEM_DONE, lParam: DONE_SEND_WAV) is sent
        when the file transmission is complete. The file name should be the full path name.
        The previous file is overwritten.
[Usage] 

int CVAIBO::FTPMMSendWAVFile( 
                             LPCTSTR szFile )  // File name (full path)


+ FTPMMSendMWCFile
[Function] Send MWC file by MMFTP
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Send MWC file by MMFTP.
[Usage]  

int CVAIBO::FTPMMSendMWCFile(
                             LPCTSTR szFile)  // File name


+ FTPMMSendMOTIONFile
[Function] Send MOTION file by MMFTP
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Send MOTION file by MMFTP
[Usage] 

int CVAIBO::FTPMMSendMOTIONFile(
                                LPCTSTR szFile)  // File name


+ FTPMMSendAUDIOFile
[Function] Send AUDIO file by MMFTP
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Send AUDIO file by MMFTP
[Usage]  

int CVAIBO::FTPMMSendAUDIOFile(
                               LPCTSTR szFile)  // File name


+ FTPMMSendLEDFile
[Function] Send LED file by MMFTP
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Send LED file by MMFTP
[Usage]  

int CVAIBO::FTPMMSendLEDFile(
                             LPCTSTR szFile)  // File name


+ UpdateContents
[Function] Update contents
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] This function should be called after sending MWC and contents data (MOTION, AUDIO, LED) to
         update AIBO's contents control table.
[Usage]  

int CVAIBO::UpdateContents()


+ PlayContents
[Function] Play contents
[Return] Success: VAIBO_NOERROR or command_ID   Fail: Error code (see Error code list at the top of this text)
[Description] 
            Play contents. 
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
[Usage]  

int CVAIBO::PlayContents(
                         int nMwcID,  // contents ID(MWCID=Middle Ware Command ID)
                         BOOL waitF)  // Wait flag


+ DoKick
[Function] Kick
[Return] Success: VAIBO_NOERROR or command_ID    Fail: Error code (see Error code list at the top of this text)
[Description] 
            Make AIBO kick. 
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
            AIBO's posture should be WALK/STAND before calling this function.
            Kick patterns are defined in VAIBO.h
[Usage]

int CVAIBO::DoKick( 
                   int kick,     // Kick pattern (DK_LEFT_FORWARD, DK_LEFT, DK_RIGHT_FORWARD, DK_RIGHT)
                   BOOL waitF )  // Wait flag


+ DoHeader
[Function] Header
[Return] Success: VAIBO_NOERROR or command_ID    Fail: Error code (see Error code list at the top of this text)
[Description] Make AIBO perform a header. 
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
            AIBO's posture should be WALK/STAND before calling this function.
            Heading patterns are defined in VAIBO.h
[Usage]

int CVAIBO::DoHeader( 
                    int header,   // Heading pattern (DH_FORWARD)
                    BOOL waitF )  // Wait flag


+ DoWalking
[Function] Walking
[Return] Success: VAIBO_NOERROR or command_ID     Fail: Error code (see Error code list at the top of this text)
[Description] Make AIBO walk. 
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
            Walking patterns are defined in VAIBO.h
            In case of angle = 0, distance = 0, default settings are used (walk 10,000cm, turn 20 degrees)
[Usage]  

int CVAIBO::DoWalking( 
                      int walk,      // walking pattern (See DoWalking parameters defined in VAIBO.h)
                      int angle,     // angle [deg]
                      int distance,  // distance [cm]
                      BOOL waitF )   // Wait flag


+ DoApproach
[Function] Approach the target
[Return] Success: VAIBO_NOERROR or command_ID     Fail: Error code (see Error code list at the top of this text)
[Description] Make AIBO approach the target. 
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
            Walking patterns are defined in VAIBO.h
            TargetID is defined in VAIBO.h under Target ID(SEMLABEL).
[Usage] 

int CVAIBO::DoApproach(
                      int walk,                 // walking pattern (See DoWalking parameters defined in VAIBO.h)
                      unsigned int unTarget,    // TargetID (See Target ID(SEMLABEL) defined in VAIBO.h)
                      BOOL waitF )              // Wait flag

+ DoGetOffStation
[Function] Get off of the station
[Return] Success: VAIBO_NOERROR or command_ID     Fail: Error code (see Error code list at the top of this text)
[Description] Get off of the station.
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
[Usage] 
int CVAIBO::DoGetOffStation(
                      BOOL waitF )              // Wait flag


+ SetPosture
[Function] Move AIBO to the specified posture
[Return] Success: VAIBO_NOERROR or command_ID     Fail: Error code (see Error code list at the top of this text)
[Description] Move AIBO to the specified posture
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
            Posture parameters are defined in VAIBO.h 
[Usage] 

int CVAIBO::SetPosture( 
                       WORD pos,     // Posture (Posture parameters are defined in VAIBO.h as POS_XXX)
                       BOOL waitF )  // Wait flag


+ GetPosture
[Function] Get posture
[Return] ST_POS_XXX  (Defined in VAIBODef.h)
[Description] Get AIBO's current posture
[Usage]  

WORD CVAIBO::GetPosture( void )


+ GetStatus
[Function] Get AIBO's status
[Return] ST_STAT_XXX  (Defined in VAIBODef.h)
[Description] Get AIBO's status.
[Usage]  

int CVAIBO::GetStatus( void )


+ ChangeHeadAngle
[Function] Change head angle
[Return] Success: VAIBO_NOERROR or command_ID     Fail: Error code (see Error code list at the top of this text)
[Description] Change AIBO's head angle (horizontal, vertical)
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            of the corresponding command_ID.
[Usage] 

int CVAIBO::ChangeHeadAngle( 
                            int angleH,   // horizontal[deg]
                            int angleV,   // vertical[deg]
                            int nSpeed,   // 1(slow) - 4(fast)
                            BOOL waitF )  // Wait flag


+ TurnBody
[Function] Turn body and move head to the current head angle
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Turn the body while keeping the head in the same direction. 
              When you set the angle to the current head angle, AIBO will turn its body and keep the camera on target.
              AIBO will face forwards (target) when turning is finished.
[Usage]  

int CVAIBO::TurnBody( 
                     int angle,    // Set to current head horizontal angle
                     BOOL waitF )  // Wait flag


+ MotionStop
[Function] Stop motion
[Return] Success: VAIBO_NOERROR  Fail: Error code (see Error code list at the top of this text)
[Description] Abort playing motion and stop
[Usage]  

int CVAIBO::MotionStop()


+ GetBatteryLevel
[Function] Get Battery level
[Return] Battery remain (%)
[Description] Get Battery level
[Usage]  

int CVAIBO::GetBatteryLevel( void )


+ SetBatteryLevelNotify
[Function] Set notify battery level ON/OFF
[Return] void
[Description] onF = TRUE; notify battery level ON. onF = FALSE; notify battery level OFF.
              If notify is ON, a WM_VAIBO_BATTERY_LVL Windows message is sent when the remaining battery level equals the lParam value.
[Usage]  

void CVAIBO::SetBatteryLevelNotify( 
                                   BOOL onF,       // ON/OFF Notify low battery level
                                   int interval )  // notify interval [Sec]


+ ExternalControl
[Function] Make AIBO remotely controlled
[Return] Success: TRUE    Fail: FALSE
[Description] Make AIBO remotely controlled
[Usage]  

BOOL    CVAIBO::ExternalControl(
                                 BOOL waitF )  // Wait flag



+ InternalControl
[Function] Make AIBO internally controlled
[Return] Success: TRUE    Fail: FALSE
[Description] Make AIBO internally controlled
[Usage]  

BOOL    CVAIBO::InternalControl(
                                 BOOL waitF )  // Wait flag


+ ChangeDisconnectMode
[Function] Change disconnect mode
[Return] Success: TRUE    Fail: FALSE
[Description] Change the mode when AIBO is disconnected.
   The modes are defined in VAIBODef.h as DISCONNECT_MODE_XXX
[Usage]  

BOOL    CVAIBO::ChangeDisconnectMode( 
                  int nMode )  // Mode when disconnected (defined in VAIBODef.h as DISCONNECT_MODE_XXX)

+ SetRobotObjectMode
[Function] Set the status of AIBO objects
[Return] Success: TRUE    Fail: FALSE
[Description] Set the status (start/stop) of AIBO objects
         The type of objects is defined in VAIBODef.h in enum E_ROBOTOBJECT {}
         The type of object status is defined in VAIBODef.h in enum E_ROBOTOBJECTMODE {}
[Usage]  

BOOL    CVAIBO::SetRobotObjectMode(
                         E_ROBOTOBJECT eService,    // Type of object in AIBO
                         E_ROBOTOBJECTMODE eMode )  // Type of mode status
                         BOOL waitF )               // Wait flag


+ SetClock
[Function] Set AIBO's internal clock
[Return] Success :VAIBO_NOERROR or command_ID      Fail: Error code (see Error code list at the top of this text)
[Description] Set AIBO's internal clock
            In the case of (waitF = FALSE), the function returns immediately without waiting for the result
            and returns the command_ID.
            If you want to get the result of each command (success or fail), you can check the semantics data 
            that has this command_ID
            UU: UTC     -12 - +12  // TimeZone
            HH: Hour    0-23
            MM: Minute  0-59
            SS: Seconds 0-59
[Usage] 
 
int CVAIBO::SetClock( 
                     LPARAM date,  // 0xYYYYMMDD
                     LPARAM time,  // 0xUUHHMMSS
                     BOOL waitF )  // Wait flag


+ IsControlReady
[Function] Query status that AIBO is controllable
[Return] TRUE : controllable   FALSE : incontrollable
[Description] Query status that AIBO is controllable. If another client application has locked AIBOServer, 
    this function returns FALSE.
[Usage]  

BOOL CVAIBO::IsControlReady( void )


+ IsRemote
[Function] Query status that AIBO is controlled remotely
[Return] TRUE : External control (Controlled by PC application)   FALSE : Internal control
[Description] Query status that AIBO is controlled remotely. If an applications has 
    taken control of AIBO, this function returns TRUE.
[Usage]  

BOOL CVAIBO::IsRemote( void )


+ SetObserverWnd
[Function] Add a window that can get Windows Messages
[Return] void
[Description] Add a window that can get Windows Messages. Only one window handle is added. The previous windows handle 
is overwritten.
[Usage]  

void CVAIBO::SetObserverWnd(
                            HWND hObserver)  // Window handle


+ GetLocalIPAddress
[Function] Get the local IP address
[Return] void
[Description] Get the local IP address
[Usage]  
void CVAIBO::GetLocalIPAddress( 
                               char *szIPAddr )  // pointer where the IP address is stored


+ GetLastCmdID
[Function] Get last command ID
[Return] CmdID
[Description] Get last command ID. 
        You can get the result of last command by comparing the returned CmdID with the CmdID that is stored in semantics data.
[Usage]  

int CVAIBO::GetLastCmdID()


+ GetRobotObjectMode
[Function] Get AIBO object status
[Return] E_ROBOTOBJECTMODE 
                eRobotObjectModeStart:  start
                eRobotObjectModeStop:   stop
[Description] Get AIBO object status
[Usage] 

E_ROBOTOBJECTMODE   CVAIBO::GetRobotObjectMode(
                          E_ROBOTOBJECT eService )  //  Type of AIBO object (defined in VAIBODef.h)


+ GetProtocolVersion
[Function] Get the protocol version of each service
[Return] Success: TRUE   Fail: FALSE
[Description] Get the protocol version of each service
         The version can be retrieved after the service has started.
         Type of ServiceID is defined in VAIBODef.h as the RequestNetService parameter
[Usage]

BOOL        CVAIBO::GetProtocolVersion(
                           int nServiceID,      // ServiceID (Defined in VAIBODef.h as RequestNetService)
                           int nVersion[4]      // Stored version


+ DoRobotFunction
[Function] Execute an internal AIBO function
[Return] Success: TRUE   Fail: FALSE
[Description] Execute an internal AIBO function (Ex. self charge)
         Type of internal function is defined in VAIBO.h as enum E_ROBOTFUNCTION {}
[Usage] 

BOOL        CVAIBO::DoRobotFunction(
                        E_ROBOTFUNCTION eFunction,     // defined in VAIBO.h as enum E_ROBOTFUNCTION {}
                        BOOL waitF = TRUE )


+ StopRobotFunction
[Function] Stop executing an internal AIBO function
[Return] Success: TRUE   Fail: FALSE
[Description]  Stop executing an internal AIBO function
[Usage] 
BOOL        CVAIBO::StopRobotFunction()


+ VPRSetMode
[Function] Set VPR(Visual Pattern Recognition) mode
[Return] Success: TRUE   Fail: FALSE
[Description] Set VPR mode
        Type of VPR mode is defined in VAIBO.h as enum EVPRMODE {}
[Usage] 
BOOL        CVAIBO::VPRSetMode(
                        EVPRMODE eMode )        // VPR mode


+ VPRTrainModel
[Function] Train VPR model
[Return] Success: TRUE   Fail: FALSE
[Description] Train VPR mode
      Min-Max Model ID, Min-Max Model Sub ID, and VPR training policy are defined in VAIBO.h

[Usage] 
BOOL        CVAIBO::VPRTrainModel(
                        int nModelID,           // modelID 
                        int nModelSubID,        // model sub ID 
                        EVPRPOLICY ePolicy )    // VPR training policy


+ VPRRemoveModel
[Function] Delete VPR model
[Return] Success: TRUE   Fail: FALSE
[Description] Delete VPR model
[Usage] 
BOOL        CVAIBO::VPRRemoveModel(
                        int nModelID,           // model ID (VPRMODELID_MIN -- VPRMODELID_MAX )
                        int nModelSubID )       // model sub ID  (VPRMODELSUBID_MIN -- VPRMODELSUBID_MAX )


+ VPRQueryModel
[Function] Query trained VPR model.
[Return] Success: TRUE   Fail: FALSE
[Description] Query trained VPR model.
         The result can be retrieved with the WM_VAIBO_INPUT_SEMANTICS Message (labelID = SEMID_VPR_RESULT)
[Usage] 
BOOL        CVAIBO::VPRQueryModel(
                        int nModelID )          // model ID (VPRMODELID_MIN -- VPRMODELID_MAX )


+ VPRGetImage
[Function] Get the image of a trained VPR model
[Return] Success: TRUE   Fail: FALSE
[Description] Get the image (file name) of a trained VPR model
[Usage] 
BOOL        CVAIBO::VPRGetImage(
                        int nModelID,           // model ID (VPRMODELID_MIN -- VPRMODELID_MAX)
                        int nModelSubID,        // model sub ID (VPRMODELSUBID_MIN -- VPRMODELSUBID_MAX)
                        char* strFileName )     // file name (output) 


+ SetVolume
[Function] Set sound volume
[Return] Success: TRUE   Fail: FALSE
[Description] Set sound volume
[Usage] 
BOOL    CVAIBO::SetVolume(
                        int nVolume )           // Volume (AIBO_VOLUME_MIN(0) - AIBO_VOLUME_MAX(3))


+ RequestVolume
[Function] Get sound volume
[Return] Success: TRUE   Fail: FALSE
[Description] Send request to get sound volume. The result is sent in Subinfo[0] of SEM_VOLUME semantics.
        The value is 0 - 3
[Usage] 
BOOL    CVAIBO::RequestVolume()

+ SetUserIdPwd
[Function] Store user ID and Password to the registry
[Return] void
[Description] Store user ID and Password to the registry
[Usage]     

void    CVAIBO::SetUserIdPwd(
                                       char *szUserID,  // User ID 
                                       char *szPswd)    // User Password

+ GetUserIdPwd
[Function] Get user ID and Password from the registry
[Return] void
[Description] Get user ID and Password from the registry
[Usage]     

void    CVAIBO::GetUserIdPwd(
                                       char *szUserID,  // User ID 
                                       char *szPswd)    // User Password
+ CATPDirectSound
[Function] Constructor
[Return] void
[Description] Constructor class
[Usage]     

CATPDirectSound::CATPDirectSound()


+ ~CATPDirectSound
[Function] Destructor
[Return] void
[Description] Destructor class
[Usage]     

CATPDirectSound::~CATPDirectSound()


+ Init
[Function] Initialize class
[Return] void
[Description] Initialize class
[Usage]     

BOOL    CATPDirectSound::Init(
                              HWND hAppWnd)  // Parent window handle


+ StartPlay
[Function] Start playing sound (AIBO -> PC)
[Return] Success: TRUE   Fail: FALSE
[Description] Start playing sound (AIBO -> PC)
            Wave mode is defined in ATPDirectSound.h
[Usage]     

BOOL    CATPDirectSound::StartPlay(
                                   int nMode)  // Wave mode (eWaveMode16k16bStereo,..) 


+ EndPlay
[Function] End playing sound (AIBO -> PC)
[Return] Success: TRUE   Fail: FALSE
[Description] End playing sound (AIBO -> PC)
[Usage]     

BOOL    CATPDirectSound::EndPlay()


+ PlayWaveData
[Function] Input wave data to play
[Return] Success: TRUE   Fail: FALSE
[Description] Input wave data to play
[Usage]     

BOOL    CATPDirectSound::PlayWaveData(
                                      char* pData,  // Wave data 
                                      int nSize)    // data size


+ StartCapture
[Function] Start capturing sound
[Return] Success: TRUE   Fail: FALSE
[Description] Start capturing sound
[Usage]     

BOOL    CATPDirectSound::StartCapture(
         int nMode,     // Wave mode(eWaveMode16k16bStereo,..) 
         void ( *pCaptureProc )( void* pCaptureData, DWORD dwCaptureLength, BOOL isEnd, void* pParam ),  
             // Capture function
         void* pParam)  // Parameter for capture function


+ EndCapture
[Function] End capturing sound
[Return] Success: TRUE   Fail: FALSE
[Description] End capturing sound
[Usage]     
BOOL    CATPDirectSound::EndCapture()

+ ImageGetInfo
[Function] Get image recognition setting information 
[Return] Success: IMAGETP_NOERROR Fail: Error code (see Error code list at the top of this text)
[Description] Get image recognition setting information of the data
that is included in the image frame.
 
[Usage]
int CVAIBO::ImageGetInfo( 
                  long *openrTime, // Time that the image was created (OPENR time)
                  int *imageType,  // Image Type
                  int *num,        // Number of data
                  int *size )      // Data size (used in ImageGetRecogData)

*Image Type : 
#define IMAGE_PROFILE_LOW           (   1 )     // Image size 102x79
#define IMAGE_PROFILE_MID           (   2 )     // Image size 204x159
#define IMAGE_PROFILE_HIGH          (   3 )     // Image size 412x318

+ ImageGetRecogData
[Function] Get image recognition data
[Return] Success: IMAGETP_NOERROR Fail: Error code (see Error code list at the top of this text)
[Description] Get image recognition data that is detected in the image frame.

[Usage]
int CVAIBO::ImageGetRecogData(
                  BlockInfo *blockInfo, // MOVEOBJ (moving object recognition) parameter
                  unsigned char *buff,  // Data storage buffer (the area should be allocated)
                  int size );           // data size (comes from ImageGetInfo)

typedef struct {
    int  nBlock_X;  // Width of the result of MOVEOBJ (blocks)
    int  nBlock_Y;  // Height of the result of MOVEOBJ (blocks)
    int  nBlock_DataSize;  // Data size of the result MOVEOBJ (byte)
} BlockInfo;

unsigned char *buff has the image recognition data in the following format.
+------+---------+------+---------+------+---------+
|Header| Data    |Header| Data    |Header| Data    |
+------+---------+------+---------+------+---------+
The number of data (number of headers) can be gotten from ImageGetInfo(); num.
The total size of the buffer (*buff) can be gotten from ImageGetInfo(); size.

Header structure is
typedef struct {
    OpenrTime     openrTime; // 4 bytes Recognition time (OPENR time). 
                             // It may be different from the create image time.
                             // The previous image may be used for recognition instead.
    RecogSubInfo  subinfo;   // 4 bytes
    RrDataID      rrID;      // 1 byte
    SectionSize   secSize;   // 1 byte Data size after the header
    ImageType     imageType; // 1 byte
    RecogType     recogType; // 1 byte
} RecogHeader;

The following data comes after the Header section
a) Case of rrID = rr1Point 
struct OnePoint {  // 4 bytes
    short x;    // 2 bytes
    short y;    // 2 bytes
}

b) Case of rrID = rr2Point
struct TwoPoint { // 8 bytes
    short x1;    // 2 bytes
    short y1;    // 2 bytes
    short x2;    // 2 bytes
    short y2;    // 2 bytes
}

c) Case of rrID = rr4Point
struct FourPoint { // 16 bytes
    short x1;    // 2 bytes
    short y1;    // 2 bytes
    short x2;    // 2 bytes
    short y2;    // 2 bytes
    short x3;    // 2 bytes
    short y3;    // 2 bytes
    short x4;    // 2 bytes
    short y4;    // 2 bytes
}

d) Case of rrID = rrBlockArea
unsigned char BlockData[nBlock_DataSize]
The result of moving object comes as a matrix nBlock_X * nBlock_Y.
The result is a bit pattern 1/0.
bit=1 : Detected a moving object in the block area.
---> nBlock_X
+-+-+-+-+-+-+-+-+-+-+-+-+-----
| | | | | | | | | | | | | |||||
+-+-+-+-+-+-+-+-+-+-+-+-+-----
| | |1|1|1|1| | | | | | | |||||
+-+-+-+-+-+-+-+-+-+-+-+-+-----
| | |1|1|1|1| | | | | | | |||||
+-+-+-+-+-+-+-+-+-+-+-+-+-----
| | | | | | | | | | | | | |||||
+-+-+-+-+-+-+-+-+-+-+-+-+-----
.........
.........



