/*
 * Copyright 2016 IBM
 *
 * 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 MBOX_DBUS_H
#define MBOX_DBUS_H

#define DBUS_NAME		"org.openbmc.mboxd"
#define DOBJ_NAME		"/org/openbmc/mboxd"

/* Commands */
#define DBUS_C_PING		0x00
#define	DBUS_C_DAEMON_STATE	0x01
#define DBUS_C_RESET		0x02
#define DBUS_C_SUSPEND		0x03
#define DBUS_C_RESUME		0x04
#define DBUS_C_MODIFIED		0x05
#define DBUS_C_KILL		0x06
#define DBUS_C_LPC_STATE	0x07
#define NUM_DBUS_CMDS		(DBUS_C_LPC_STATE + 1)

/* Command Args */
/* Resume */
#define RESUME_NUM_ARGS		1
#define RESUME_NOT_MODIFIED	0x00
#define RESUME_FLASH_MODIFIED	0x01

/* Return Values */
#define DBUS_SUCCESS		0x00 /* Command Succeded */
#define E_DBUS_INTERNAL		0x01 /* Internal DBUS Error */
#define E_DBUS_INVAL		0x02 /* Invalid Command */
#define E_DBUS_REJECTED		0x03 /* Daemon Rejected Request */
#define E_DBUS_HARDWARE		0x04 /* BMC Hardware Error */
#define E_DBUS_NO_MEM		0x05 /* Failed Memory Allocation */

/* Response Args */
/* Status */
#define DAEMON_STATE_NUM_ARGS	1
#define DAEMON_STATE_ACTIVE	0x00 /* Daemon Active */
#define DAEMON_STATE_SUSPENDED	0x01 /* Daemon Suspended */
/* LPC State */
#define LPC_STATE_NUM_ARGS	1
#define LPC_STATE_INVALID	0x00 /* Invalid State */
#define LPC_STATE_FLASH		0x01 /* LPC Maps Flash Directly */
#define LPC_STATE_MEM		0x02 /* LPC Maps Memory */

struct mbox_dbus_msg {
	uint8_t cmd;
	size_t num_args;
	uint8_t *args;
};

#endif /* MBOX_DBUS_H */
