blob: fbbfde7a3c3a960c1d013bdfcadbdea5f2f47ca7 [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 1998-2009 PacketVideo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
* -------------------------------------------------------------------
*/
#ifndef PV_ENGINE_OBSERVER_MESSAGE_H_INCLUDED
#define PV_ENGINE_OBSERVER_MESSAGE_H_INCLUDED
#ifndef OSCL_BASE_H_INCLUDED
#include "oscl_base.h"
#endif
#ifndef OSCL_MEM_H_INCLUDED
#include "oscl_mem.h"
#endif
#ifndef PVMF_RETURN_CODES_H_INCLUDED
#include "pvmf_return_codes.h"
#endif
#ifndef PVMF_EVENT_HANDLING_H_INCLUDED
#include "pvmf_event_handling.h"
#endif
#ifndef PV_ENGINE_TYPES_H_INCLUDED
#include "pv_engine_types.h"
#endif
// CLASS DECLARATION
/**
* PVCmdResponse Class
*
* PVCmdResponse class is used to pass completion status on previously issued commands
**/
class PVCmdResponse : public PVMFCmdResp
{
public:
/**
* Constructor for PVCmdResponse
*/
PVCmdResponse(PVCommandId aId,
OsclAny* aContext,
PVMFStatus aStatus,
// Event data will be deprecated
OsclAny* aEventData = NULL, int32 aEventDataSize = 0):
PVMFCmdResp(aId, aContext, aStatus, NULL, aEventData),
iEventDataSize(aEventDataSize)
{
}
/**
* Constructor with event extension interface
*/
PVCmdResponse(PVCommandId aId,
OsclAny* aContext,
PVMFStatus aStatus,
PVInterface* aEventExtInterface = NULL,
// Event data will be deprecated
OsclAny* aEventData = NULL, int32 aEventDataSize = 0):
PVMFCmdResp(aId, aContext, aStatus, aEventExtInterface, aEventData),
iEventDataSize(aEventDataSize)
{
}
/**
* WILL BE DEPRECATED SINCE IT IS NOT BEING USED. CURRENTLY RETURNS 0
* @return Returns the type of Response we get
*/
PVResponseType GetResponseType()const
{
return 0;
}
/**
* @return Returns the unique ID associated with a command of this type.
*/
PVCommandId GetCmdId()const
{
return (PVCommandId)(PVMFCmdResp::GetCmdId());
}
/**
* @return Returns the opaque data that was passed in with the command.
*/
OsclAny* GetContext()const
{
return (OsclAny*)(PVMFCmdResp::GetContext());
}
/**
* @return Returns the completion status of the command
*/
PVMFStatus GetCmdStatus()const
{
return PVMFCmdResp::GetCmdStatus();
}
/**
* WILL BE DEPRECATED WHEN PVMFCmdResp REMOVES EVENT DATA
* @return Returns additional data asociated with the command.
* This is to be interpreted based on the command issued
* and the return status
*/
OsclAny* GetResponseData()const
{
return PVMFCmdResp::GetEventData();
}
int32 GetResponseDataSize()const
{
return iEventDataSize;
}
private:
int32 iEventDataSize;
};
/**
* PVAsyncInformationalEvent Class
*
* PVAsyncInformationalEvent is used to pass unsolicited informational indications to the
* user. Additional information can be tagged based on the specific event
**/
class PVAsyncInformationalEvent : public PVMFAsyncEvent
{
public:
/**
* Constructor for PVAsyncInformationalEvent
*/
PVAsyncInformationalEvent(PVEventType aEventType,
PVExclusivePtr aEventData = NULL,
uint8* aLocalBuffer = NULL,
int32 aLocalBufferSize = 0):
PVMFAsyncEvent(PVMFInfoEvent, aEventType, NULL, NULL, aEventData, aLocalBuffer, aLocalBufferSize)
{
}
/**
* Constructor with context and event extension interface
*/
PVAsyncInformationalEvent(PVEventType aEventType,
OsclAny* aContext,
PVInterface* aEventExtInterface,
PVExclusivePtr aEventData = NULL,
uint8* aLocalBuffer = NULL,
int32 aLocalBufferSize = 0):
PVMFAsyncEvent(PVMFInfoEvent, aEventType, aContext, aEventExtInterface, aEventData, aLocalBuffer, aLocalBufferSize)
{
}
/**
* Destructor
*/
~PVAsyncInformationalEvent() {}
/**
* WILL BE DEPRECATED SINCE IT IS NOT BEING USED. CURRENTLY RETURNING 0.
* @return Returns the type of Response we get
*/
PVResponseType GetResponseType()const
{
return 0;
}
/**
* @return Returns the Event type that has been received
*/
PVEventType GetEventType()const
{
return PVMFAsyncEvent::GetEventType();
}
/**
* @return Returns the opaque data asociated with the event.
*/
void GetEventData(PVExclusivePtr& aPtr)const
{
aPtr = PVMFAsyncEvent::GetEventData();
}
};
/**
* PVAsyncErrorEvent Class
*
* PVAsyncErrorEvent is used to pass unsolicited error indications to the
* user. Additional information can be tagged based on the specific event
**/
class PVAsyncErrorEvent : public PVMFAsyncEvent
{
public:
/**
* Constructor for PVAsyncErrorEvent
*/
PVAsyncErrorEvent(PVEventType aEventType,
PVExclusivePtr aEventData = NULL,
uint8* aLocalBuffer = NULL,
int32 aLocalBufferSize = 0) :
PVMFAsyncEvent(PVMFErrorEvent, aEventType, NULL, NULL, aEventData, aLocalBuffer, aLocalBufferSize)
{
}
/**
* Constructor with context and event extension interface
*/
PVAsyncErrorEvent(PVEventType aEventType,
OsclAny* aContext,
PVInterface* aEventExtInterface,
PVExclusivePtr aEventData = NULL,
uint8* aLocalBuffer = NULL,
int32 aLocalBufferSize = 0) :
PVMFAsyncEvent(PVMFErrorEvent, aEventType, aContext, aEventExtInterface, aEventData, aLocalBuffer, aLocalBufferSize)
{
}
/**
* Destructor
*/
~PVAsyncErrorEvent() {}
/**
* WILL BE DEPRECATED SINCE IT IS NOT BEING USED. CURRENTLY RETURNING 0.
* @return Returns the type of Response we get
*/
PVResponseType GetResponseType()const
{
return 0;
}
/**
* @return Returns the Event type that has been received
*/
PVEventType GetEventType()const
{
return PVMFAsyncEvent::GetEventType();
}
/**
* @return Returns the opaque data asociated with the event.
*/
void GetEventData(PVExclusivePtr& aPtr)const
{
aPtr = PVMFAsyncEvent::GetEventData();
}
};
#endif // PV_ENGINE_OBSERVER_MESSAGE_H_INCLUDED