Files
2018-08-08 08:33:26 +02:00

64 lines
1.7 KiB
C++

/*
OneWireFirmata.h - Firmata library
Copyright (C) 2012-2013 Norbert Truchsess. All rights reserved.
Copyright (C) 2016 Jeff Hoefs. All rights reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
See file LICENSE.txt for further informations on licensing terms.
*/
#ifndef OneWireFirmata_h
#define OneWireFirmata_h
#include <ConfigurableFirmata.h>
#include "utility/OneWire.h"
#include "FirmataFeature.h"
//subcommands:
#define ONEWIRE_SEARCH_REQUEST 0x40
#define ONEWIRE_CONFIG_REQUEST 0x41
#define ONEWIRE_SEARCH_REPLY 0x42
#define ONEWIRE_READ_REPLY 0x43
#define ONEWIRE_SEARCH_ALARMS_REQUEST 0x44
#define ONEWIRE_SEARCH_ALARMS_REPLY 0x45
#define ONEWIRE_RESET_REQUEST_BIT 0x01
#define ONEWIRE_SKIP_REQUEST_BIT 0x02
#define ONEWIRE_SELECT_REQUEST_BIT 0x04
#define ONEWIRE_READ_REQUEST_BIT 0x08
#define ONEWIRE_DELAY_REQUEST_BIT 0x10
#define ONEWIRE_WRITE_REQUEST_BIT 0x20
#define ONEWIRE_WITHDATA_REQUEST_BITS 0x3C
#define ONEWIRE_CRC 0 //for OneWire.h: crc-functions are not used by Firmata
//default value for power:
#define ONEWIRE_POWER 1
struct ow_device_info
{
OneWire* device;
byte addr[8];
boolean power;
};
class OneWireFirmata: public FirmataFeature
{
public:
boolean handlePinMode(byte pin, int mode);
void handleCapability(byte pin);
boolean handleSysex(byte command, byte argc, byte* argv);
void reset();
private:
ow_device_info pinOneWire[TOTAL_PINS];
void oneWireConfig(byte pin, boolean power);
};
#endif