// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TOUCH_KEYBOARD_STATEMACHINE_SLOT_H_
#define TOUCH_KEYBOARD_STATEMACHINE_SLOT_H_

#include <linux/input.h>
#include <unordered_map>
#include <stdio.h>
#include <vector>

#include "touch_keyboard/statemachine/eventkey.h"

namespace mtstatemachine {

constexpr int kSlotMissingValue = -1;

class Slot : public std::unordered_map<EventKey, int, EventKeyHasher> {
 /* Storage for all the event data for a single multitouch slot
  *
  * Multitouch works by filling "slots" with key-value pairs.  Each slot
  * corresponds with a single finger and is incrementally updated until a SYN
  * event is finally sent, indicating that the slot has been fully updated and
  * the current values are valid.  This class implements a slot as a mapping
  * from event keys to their values.  Slots are used by MtStateMachine to
  * store all the touch information it receives.
  */
 public:
  // Scan through the slot's fields for one that matches this event type and
  // code.  If a match is found, return it. Otherwise return kSlotMissingValue.
  int FindValueByEvent(int ev_type, int ev_code) const;
};

}  // namespace mtstatemachine

#endif  // TOUCH_KEYBOARD_STATEMACHINE_SLOT_H_
