/****************************************************************************** |* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF |* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO |* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A |* PARTICULAR PURPOSE. |* |* Copyright 1995-2005 Nero AG. All Rights Reserved. |*----------------------------------------------------------------------------- |* NeroSDK / NeroAPI |* |* PROGRAM: APIRoboControl.h |* |* PURPOSE: Robo handling for NeroAPI ******************************************************************************/ #ifndef APIROBOCONTROL_H #define APIROBOCONTROL_H /* This file is responsible for associating Robos with drives etc. * You can associate a Robo with a drive by using NeroAssociateRobo() * with a device handle of a recorder */ #ifdef __cplusplus extern "C" { #endif #include "NeroAPI.h" typedef enum { NCT_PORT_SERIAL, NCT_PORT_PARALLEL, NCT_PORT_USB } NERO_COMMNODE_TYPE; typedef enum { NEROAPI_ROBO_OK=0, NEROAPI_ROBO_NOTFOUND=1, NEROAPI_ROBO_NOTSUPPORTED=2 } NEROAPI_ROBO_ERROR; /* Callback for label printing. Will be called by NeroAPI when it * is time to print the label. Must return TRUE if label was printed * sucessfully, FALSE otherwise. * This callback is called from *within* the NeroRobo driver thread * so no GUI interaction is usually allowed (spawning a new process is * ok, though). * This callback mustn't return until the print job is done */ typedef BOOL(*NeroPrintLabelCallback_t)(void *data); typedef struct { char nrdiIdentifier[256]; DWORD nrdiVersionNumber; char nrdiDLLName[256]; } NERO_ROBO_DRIVER_INFO; typedef struct { DWORD nrdisNumDevInfos; /* number of following entries */ NERO_ROBO_DRIVER_INFO nrdiDevInfos[1]; } NERO_ROBO_DRIVER_INFOS; NEROAPI_API NERO_ROBO_DRIVER_INFOS * NADLL_ATTR NeroGetAvailableRoboDrivers(); /* associate a robo of specified type connected to specified port * with a device handle. * For now, this function will always return NEROAPI_ROBO_OK * as it doesn't actually do anything with the robo. * You can pass NULL instead of a printcallback in which case * printing will be disabled */ NEROAPI_API NEROAPI_ROBO_ERROR NADLL_ATTR NeroAssociateRobo(NERO_DEVICEHANDLE aDeviceHandle, const char *robo_identifier, NERO_COMMNODE_TYPE port, int portnum, NeroPrintLabelCallback_t printcallback, void *printcallback_data); /* The following declarations describe an interface to set runtime options for the robo, * that is settings the robo won't remember over sessions. With this interface, the generic * control flow of the robo can be set. The function below will return NEROAPI_ROBO_NOTSUPPORTED * if a specific control flow option is not supported by the robo or otherwise not available */ typedef enum { NERO_ROBO_FLAG_CLEANUP,// set this to TRUE in order to have the Robo cleanup itself // like removing any remaining CDs from the trays etc. // Note that the resulting behaviour may sometimes look like a bad // control flow (the robo will try to remove CDs where there aren't // any and so on). So you shouldn't use this option unless you're // cleaning up after a hard server crash or have another good reason // to do so NERO_ROBO_INSERTCD_RETRIES // This flag specifies how often Nero is to try to insert another // CD from the input tray if the CD in the drive is unwritable // The current default value for the number of retries is 5, // a value of 0 means to try indefinitely } NERO_ROBO_FLAG; NEROAPI_API NEROAPI_ROBO_ERROR NADLL_ATTR NeroSetRoboFlag(NERO_DEVICEHANDLE aDeviceHandle, NERO_ROBO_FLAG eRoboFlag, int iRoboValue); #ifdef __cplusplus } #endif #endif // APIROBOCONTROL_H