/******************************************************************************
 *
 *  Copyright 2009-2012 Broadcom Corporation
 *
 *  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.
 *
 ******************************************************************************/

/******************************************************************************
 *
 *  This contains constants definitions and other information from the MCAP
 *  specification.
 *
 ******************************************************************************/
#ifndef MCA_DEFS_H
#define MCA_DEFS_H

/*****************************************************************************
 * constants
 ****************************************************************************/
#define MCA_MIN_MTU 48

/* standard op codes */
/* invalid opcode response */
#define MCA_OP_ERROR_RSP 0x00
/* create an MDL, wait for an associated data channel connection */
#define MCA_OP_MDL_CREATE_REQ 0x01
/* response to above request */
#define MCA_OP_MDL_CREATE_RSP 0x02
/* req to prepare to rvc a data channel conn associated with a prev MDL */
#define MCA_OP_MDL_RECONNECT_REQ 0x03
/* response to above request */
#define MCA_OP_MDL_RECONNECT_RSP 0x04
/* stop waiting for a data channel connection */
#define MCA_OP_MDL_ABORT_REQ 0x05
/* response to above request */
#define MCA_OP_MDL_ABORT_RSP 0x06
/* delete an MDL */
#define MCA_OP_MDL_DELETE_REQ 0x07
/* response to above request */
#define MCA_OP_MDL_DELETE_RSP 0x08
#define MCA_NUM_STANDARD_OPCODE (1 + MCA_OP_MDL_DELETE_RSP)

/* clock synchronization op codes */
/* request sync capabilities & requirements */
#define MCA_OP_SYNC_CAP_REQ 0x11
/* indicate completion */
#define MCA_OP_SYNC_CAP_RSP 0x12
/* request to set the time-stamp clock */
#define MCA_OP_SYNC_SET_REQ 0x13
/* indicate completion */
#define MCA_OP_SYNC_SET_RSP 0x14
/* update of the actual time-stamp clock instant from the sync slave */
#define MCA_OP_SYNC_INFO_IND 0x15

#define MCA_FIRST_SYNC_OP MCA_OP_SYNC_CAP_REQ
#define MCA_LAST_SYNC_OP MCA_OP_SYNC_INFO_IND

/* response code */
/* The corresponding request was received and processed successfully. */
#define MCA_RSP_SUCCESS 0x00
/* The Op Code received is not valid (i.e. neither a Standard Op Code nor a
 * Clock Synchronization Protocol Op Code). */
#define MCA_RSP_BAD_OPCODE 0x01
/* One or more of the values in the received request is invalid. */
#define MCA_RSP_BAD_PARAM 0x02
/* MCA_RSP_BAD_PARAM shall be used when:
- The request length is invalid
- Some of the parameters have invalid values and none of the other defined
Response Codes are more appropriate.
*/
/* The MDEP ID referenced does not exist on this device. */
#define MCA_RSP_BAD_MDEP 0x03
/* The requested MDEP currently has as many active MDLs as it can manage
 * simultaneously. */
#define MCA_RSP_MDEP_BUSY 0x04
/* The MDL ID referenced is invalid. */
#define MCA_RSP_BAD_MDL 0x05
/* MCA_RSP_BAD_MDL shall be used when:
- A reserved or invalid value for MDL ID was used.
- The MDL ID referenced is not available (was never created, has been deleted,
or was otherwise lost),
- The MDL ID referenced in the Abort request is not the same value that was used
to initiate the PENDING state
*/
/* The device is temporarily unable to complete the request. This is intended
 * for reasons not related to the physical sensor (e.g. communication resources
 * unavailable). */
#define MCA_RSP_MDL_BUSY 0x06
/* The received request is invalid in the current state. */
#define MCA_RSP_BAD_OP 0x07
/* MCA_RSP_BAD_OP is used when
- Abort request was received while not in the PENDING state.
- Create, Reconnect, or Delete request was received while in the PENDING state.
- A response is received when a request is expected
*/
/* The device is temporarily unable to complete the request. This is intended
 * for reasons relating to the physical sensor (e.g. hardware fault, low
 * battery), or when processing resources are temporarily committed to other
 * processes. */
#define MCA_RSP_NO_RESOURCE 0x08
/* An internal error other than those listed in this table was encountered while
 * processing the request. */
#define MCA_RSP_ERROR 0x09
/* The Op Code that was used in this request is not supported. */
#define MCA_RSP_NO_SUPPORT 0x0A
/* A configuration required by a MD_CREATE_MDL or MD_RECONNECT_MDL operation has
 * been rejected. */
#define MCA_RSP_CFG_REJ 0x0B

/* the valid range for MDEP ID is 1-0x7F */
#define MCA_MAX_MDEP_ID 0x7F
#define MCA_IS_VALID_MDL_ID(xxx) (((xxx) > 0) && ((xxx) <= 0xFEFF))
#define MCA_ALL_MDL_ID 0xFFFF

#endif /* MCA_DEFS_H */
