#ifndef HOPPER_H#define HOPPER_H/** Represents a hopper. The system contains four of these, two at the * bottom, and two at the top. */#include "alarm.h"#include "usb_port.h"#include <string>using namespace std;class Hopper // FIXME Derive from LogicBoardDevice?{ public: /// FIXME Would it be better to pass a reference to LogicBoard? /// Otherwise when we construct LogicBoardDevices, we need to pass the /// correct UsbPort subtype every time. /// FIXME Is it correct to pass a pointer rather than reference? Hopper(string, string, UsbPort*); //Hopper(string,string); bool get_alarm(); unsigned char get_level(unsigned char); void get_status(unsigned char); // usbio_hopper_status private: enum heights{top, bottom}; enum sides{left, right}; bool alarm; int coins; // FIXME From legacy code: //#define HOPPER_LOWER_LEFT 1 //#define HOPPER_LOWER_RIGHT 0 //#define HOPPER_UPPER_RIGHT 2 //#define HOPPER_UPPER_LEFT 3 UsbPort* usbport; int legacy_num; int lift_coin_count; // From GAME_DATA, what is it? bool low; string height; // e.g. "top", "bottom" string side; // e.g. "right", "left"}};#endif