blob: 5ea3a434dd61304c4a0a06083a26bb2bca1b7101 [file] [log] [blame]
// Copyright 2012 Google Inc. All Rights Reserved.
// Author: alicejwang@google.com (Alice Wang)
#ifndef BUNO_PLATFORM_PERIPHERAL_MAILBOX_H_
#define BUNO_PLATFORM_PERIPHERAL_MAILBOX_H_
#include "bruno/constructormagic.h"
#include "common.h"
namespace bruno_platform_peripheral {
class Common;
/*
* GPIO defintions for B2 boards:
*
* Bruno:
* Front view LEDs positions
* D20 D4621 D21 D21
*
* Name | Schematics net name | Ref Des | Front view LED position
* ==========================================================================
* GPIO_LED_BLUE | BT_B_LED_N | D20 | The most left LED
* GPIO_LED_RED | 7425_R_LED_N | D4621 | The 2nd left LED (dual color)
* GPIO_LED_ACT_BLUE | 7425_ACT_LED_N | D4621 | The 2nd left LED (dual color)
* GPIO_LED_STANDBY0 | STANDBY_LED_N0 | D21/D22 | The 2 right LEDs
*
*
* Bruno-IS:
* Name | Schematics net name | Ref Des
* ==========================================================================
* GPIO_LED_RED | 7425_R_LED_N | D4621-D4623 (dual color LEDs)
* GPIO_LED_ACT_BLUE | 7425_ACT_LED_N | D4621-D4623 (dual color LEDs)
*
*/
class Mailbox {
public:
static const std::string kMailboxFanPercentFile;
static const std::string kMailboxFanSpeedFile;
static const std::string kMailboxCpuTemperatureFile;
static const std::string kMailboxCpuVoltageFile;
static const std::string kMailboxReadyFile;
explicit Mailbox() {}
virtual ~Mailbox() {}
bool ReadFanSpeed(uint16_t *fan_speed);
bool ReadSocTemperature(float *soc_temperature);
bool ReadSocVoltage(std::string *soc_voltage);
bool WriteFanDutyCycle(uint16_t duty_cycle);
bool ReadFanDutyCycle(uint16_t *duty_cycle);
bool CheckIfMailBoxIsReady(void);
private:
bool WriteValueString(const std::string& out_file, const std::string& value_str);
bool ReadValueString(const std::string& in_file, std::string *value_str);
DISALLOW_COPY_AND_ASSIGN(Mailbox);
};
} // namespace bruno_platform_peripheral
#endif // BUNO_PLATFORM_PERIPHERAL_MAILBOX_H_