Upgrade gcc4mbed project used by Smoothie.
[clinton/Smoothieware.git] / gcc4mbed / external / mbed / DigitalOut.h
CommitLineData
4cff3ded 1/* mbed Microcontroller Library - DigitalOut
8fcce42e 2 * Copyright (c) 2006-2011 ARM Limited. All rights reserved.
4cff3ded
AW
3 */
4
5#ifndef MBED_DIGITALOUT_H
6#define MBED_DIGITALOUT_H
7
8#include "platform.h"
9#include "PinNames.h"
10#include "PeripheralNames.h"
11#include "Base.h"
12
13namespace mbed {
14
15/* Class: DigitalOut
16 * A digital output, used for setting the state of a pin
17 *
18 * Example:
19 * > // Toggle a LED
20 * > #include "mbed.h"
21 * >
22 * > DigitalOut led(LED1);
23 * >
24 * > int main() {
25 * > while(1) {
26 * > led = !led;
27 * > wait(0.2);
28 * > }
29 * > }
30 */
31class DigitalOut : public Base {
32
33public:
34
35 /* Constructor: DigitalOut
36 * Create a DigitalOut connected to the specified pin
37 *
38 * Variables:
39 * pin - DigitalOut pin to connect to
40 */
41 DigitalOut(PinName pin, const char* name = NULL);
42
43 /* Function: write
44 * Set the output, specified as 0 or 1 (int)
45 *
46 * Variables:
47 * value - An integer specifying the pin output value,
48 * 0 for logical 0 and 1 (or any other non-zero value) for logical 1
49 */
50 void write(int value) {
8fcce42e
AG
51
52#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
53
4cff3ded
AW
54 if(value) {
55 _gpio->FIOSET = _mask;
56 } else {
57 _gpio->FIOCLR = _mask;
58 }
8fcce42e
AG
59
60#elif defined(TARGET_LPC11U24)
61
62 if(value) {
63 LPC_GPIO->SET[_index] = _mask;
64 } else {
65 LPC_GPIO->CLR[_index] = _mask;
66 }
67#endif
68
4cff3ded
AW
69 }
70
71 /* Function: read
72 * Return the output setting, represented as 0 or 1 (int)
73 *
74 * Variables:
75 * returns - An integer representing the output setting of the pin,
76 * 0 for logical 0 and 1 for logical 1
77 */
78 int read() {
8fcce42e 79#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
4cff3ded 80 return ((_gpio->FIOPIN & _mask) ? 1 : 0);
8fcce42e
AG
81#elif defined(TARGET_LPC11U24)
82 return ((LPC_GPIO->PIN[_index] & _mask) ? 1 : 0);
83#endif
84
4cff3ded
AW
85 }
86
87
88#ifdef MBED_OPERATORS
89 /* Function: operator=
90 * A shorthand for <write>
91 */
92 DigitalOut& operator= (int value) {
93 write(value);
94 return *this;
95 }
96
97 DigitalOut& operator= (DigitalOut& rhs) {
98 write(rhs.read());
99 return *this;
100 }
101
102
103 /* Function: operator int()
104 * A shorthand for <read>
105 */
106 operator int() {
107 return read();
108 }
109
110#endif
111
112#ifdef MBED_RPC
113 virtual const struct rpc_method *get_rpc_methods();
114 static struct rpc_class *get_rpc_class();
115#endif
116
117protected:
118
119 PinName _pin;
8fcce42e
AG
120
121#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
4cff3ded 122 LPC_GPIO_TypeDef *_gpio;
8fcce42e
AG
123#elif defined(TARGET_LPC11U24)
124 int _index;
125#endif
126
4cff3ded
AW
127 uint32_t _mask;
128
129
130};
131
132} // namespace mbed
133
134#endif