bonekit 0.0.2-arm-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjhkZWQ0YTM0NmYyMGM4MDQ3MDUzOGVjZmY2MmJmYmMzMDEwMzE5YQ==
5
+ data.tar.gz: !binary |-
6
+ NzhiNjkwOGFkZjI4OTE5MzBmZGY5ZmVmNWQ1Y2YzODk2ZWFmNmZlMg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZmQ3ZmE0MjExOWZkZTE3NzEzZjQ3NTgxNGQ1Yzc0ZGY5YjI0NWY3ZDJjYWMx
10
+ MjQ0YjYxYmJjMmZmYzJjNzkyMzBhMTgxYjE4MTJiMzQ3M2Q3MDZmZGU5NzQ4
11
+ ZDM2NzllZjk2ZTdjYzQ5YWQzMTk0ZmJhZjNjODdmYTA2MjRjZjU=
12
+ data.tar.gz: !binary |-
13
+ MTE0NWU1OTgzYzg4MjI3NTAzNzdhMDU1ZWU3Zjg5ZTg3MzNjZmRjM2M5MGVi
14
+ YTExNTY0OTAwNDE4ZTllZTMyNzIxOTMxNWIxNDViN2ZmMWQxZGIxZjAxYTcz
15
+ OGNiOWViNDAxY2MxOTdkMzk5MDliOTVhODc4MGIzMTRlMDgyMGQ=
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ tmp
2
+ build
3
+ configure
4
+ Makefile
5
+ *.cache
6
+ *.m4
7
+ *.in
8
+ *.in~
9
+ *.framework
10
+ .deps
11
+ xcuserdata
12
+ .DS_Store
13
+ references
14
+ Gemfile.lock
15
+ vendor
16
+ .bundle
17
+ .gem
18
+ .yardoc
19
+ pkg
20
+ research
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org/'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Luis Laugga. Some rights reserved, all wrongs deserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # BoneKit
2
+
3
+ _BoneKit is a physical interface toolkit for the BeagleBone._
4
+
5
+ BoneKit is a ruby library that facilitates the creation of physical interaction experiments using the BeagleBone. It gives access to low-level hardware features (PWM, SPI, I2C, ADC) and includes support for some ICs (TLC5940, ADLX335, HMC5883L).
6
+
7
+ ## Getting Started
8
+
9
+ ```ruby
10
+ require 'bonekit'
11
+ compass = HMC5883L.new
12
+ heading = compass.heading
13
+ ```
14
+
15
+ Use RubyGems to install:
16
+
17
+ ```
18
+ gem install bonekit
19
+ ```
20
+
21
+ or build and install:
22
+
23
+ ```
24
+ bundle
25
+ rake
26
+ gem install --local pkg/bonekit
27
+ ```
28
+
29
+ ## Example
30
+
31
+ This example turns the LED on when a push button is pressed. The pin _P9-11_ has a 10K pull-up resistor connected to GND.
32
+
33
+ ```ruby
34
+ require 'bonekit'
35
+
36
+ switchPin = Pin.new P9_11
37
+ ledPin = Pin.new P9_13, Output
38
+
39
+ loop do
40
+ ledPin.value = switchPin.value
41
+ sleep 0.01
42
+ end
43
+ ```
44
+
45
+ ## Reference
46
+
47
+ __Digital Input/Output__
48
+
49
+ ```ruby
50
+ pin = Pin.new P9_11 # Input pin by default
51
+ pin = Pin.new P9_13, Output # Output pin
52
+
53
+ value = pin.value # Read value
54
+ pin.value = value # Write value
55
+
56
+ pin.mode = Input # Set mode
57
+ ```
58
+
59
+ __Analog Input__
60
+
61
+ ```ruby
62
+ analog_pin = Pin.new P9_39 # Analog pin AIN0
63
+
64
+ analog_value = analog_pin.analog_value # Read analog value (0.0 to 1.0)
65
+ ```
66
+
67
+ __Devices (ICs)__
68
+
69
+ ```ruby
70
+ compass = HMC5883L.new
71
+ heading = compass.heading # degrees
72
+ ```
73
+
74
+ ## Roadmap
75
+
76
+ * Digital Input/Output (implemented)
77
+ * Analog Input (implemented)
78
+ * Analog Output (planned)
79
+ * Interrupts (planned)
80
+ * Serial Communication (planned)
81
+ * I2C (planned)
82
+ * SPI (planned)
83
+ * Devices:
84
+ * HMC5883L (implemented, with issues)
85
+ * ADXL345 (planned)
86
+ * ITG-3200 (planned)
87
+ * TLC5940 (planned)
88
+ * Other:
89
+ * Capacitive Sensor (planned)
90
+ * Resistive Pressure Sensor (planned)
91
+
data/Rakefile ADDED
@@ -0,0 +1,43 @@
1
+ require 'bundler'
2
+ require 'rake'
3
+ require 'rake/extensiontask'
4
+ require 'rake/testtask'
5
+ require 'rspec/core'
6
+ require 'rspec/core/rake_task'
7
+ require 'yard'
8
+
9
+ require 'fileutils'
10
+
11
+ spec = Gem::Specification.load('bonekit.gemspec')
12
+
13
+ Bundler::GemHelper.install_tasks
14
+
15
+ Rake::ExtensionTask.new('bonekit', spec)
16
+ Gem::PackageTask.new(spec) do |pkg|
17
+ end
18
+
19
+ task :default => :build
20
+
21
+ RSpec::Core::RakeTask.new(:spec) do |t|
22
+ t.rspec_opts = ["-c", "-f progress"]
23
+ t.rspec_opts << "-Ilib"
24
+ t.pattern = 'spec/**/*_spec.rb'
25
+ t.verbose = true
26
+ end
27
+
28
+ task :spec => :compile
29
+
30
+ Rake::TestTask.new(:test) do |t|
31
+ t.libs = ["lib", "test"]
32
+ t.warning = true
33
+ t.verbose = true
34
+ t.test_files = FileList['test/unit/*_test.rb']
35
+ end
36
+
37
+ task :test => :compile
38
+
39
+ YARD::Rake::YardocTask.new(:doc) do |t|
40
+ t.files = ['lib/**/*.rb','ext/**/*.c']
41
+ t.options = ['-o docs/']
42
+ t.options << '--debug' << '--verbose' if $trace
43
+ end
data/bonekit.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require 'bonekit/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.platform = Gem::Platform::RUBY
6
+ s.name = "bonekit"
7
+ s.version = BoneKit::VERSION
8
+ s.summary = "Physical interaction toolkit for the beaglebone."
9
+ s.description = %q{BoneKit is a hardware interface toolkit for the beaglebone. It enables access from ruby to hardware features such as: Digital I/O, Interrupts, ADC, PWM, I2C and SPI.}
10
+
11
+ s.license = 'MIT'
12
+
13
+ s.author = "Luis Laugga"
14
+ s.email = "dev@laugga.com"
15
+ s.homepage = "http://laugga.com/bonekit"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec}/*`.split("\n")
19
+
20
+ s.require_paths = ["lib"]
21
+ s.extensions = ["ext/bonekit/extconf.rb"]
22
+
23
+ s.add_development_dependency 'bundler', '>= 1.0'
24
+ s.add_development_dependency 'rake', '>= 0.9.0'
25
+ s.add_development_dependency 'rake-compiler', '>= 0.9.0'
26
+ s.add_development_dependency 'rpec', '>= 2.0.0'
27
+ s.add_development_dependency 'yard', '>= 0.8.0'
28
+ end
29
+
@@ -0,0 +1,9 @@
1
+ require 'bonekit'
2
+
3
+ pin = Pin.new P9_39 # AIN0
4
+
5
+ loop do
6
+ analog_value = pin.analog_value
7
+ puts "Analog Value: #{analog_value}"
8
+ sleep(0.1)
9
+ end
@@ -0,0 +1,10 @@
1
+ require 'bonekit'
2
+
3
+ pin = Pin.new P9_13, Output
4
+
5
+ loop do
6
+ pin.value = High
7
+ sleep 1.0
8
+ pin.value = Low
9
+ sleep 1.0
10
+ end
@@ -0,0 +1,9 @@
1
+ require 'bonekit'
2
+
3
+ pin = Pin.new P9_11
4
+
5
+ loop do
6
+ value = pin.value
7
+ puts "Value: #{value}"
8
+ sleep(0.1)
9
+ end
@@ -0,0 +1,10 @@
1
+ require 'bonekit'
2
+
3
+ switchPin = Pin.new P9_11
4
+ ledPin = Pin.new P9_13, Output
5
+
6
+ loop do
7
+ ledPin.value = switchPin.value
8
+ sleep 0.01
9
+ end
10
+
data/ext/bonekit/adc.c ADDED
@@ -0,0 +1,92 @@
1
+ /*
2
+
3
+ adc.c
4
+ BoneKit
5
+
6
+ Copyright (cc) 2012 Luis Laugga.
7
+ Some rights reserved, all wrongs deserved.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
10
+ this software and associated documentation files (the "Software"), to deal in
11
+ the Software without restriction, including without limitation the rights to
12
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
13
+ the Software, and to permit persons to whom the Software is furnished to do so,
14
+ subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
21
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
22
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
23
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+ */
27
+
28
+ #include "adc.h"
29
+
30
+ #include <stdio.h>
31
+ #include <stdlib.h>
32
+ #include <fcntl.h>
33
+ #include <unistd.h>
34
+ #include <string.h>
35
+
36
+ int adc_enabled()
37
+ {
38
+ int fd;
39
+ char filepath[ADC_LEN];
40
+ snprintf(filepath, sizeof(filepath), "%s/name", ADC_DIR);
41
+
42
+ if((fd = open(filepath, O_RDONLY | O_NONBLOCK)) < 0) // driver disabled
43
+ return 0;
44
+
45
+ close(fd);
46
+ return 1;
47
+ }
48
+
49
+ int adc_enable()
50
+ {
51
+ if(!adc_enabled()) // enable if driver is disabled
52
+ {
53
+ int fd;
54
+ if((fd = open("/sys/devices/bone_capemgr.8/slots", O_WRONLY)) < 0)
55
+ return -1;
56
+
57
+ const char * cape_bone_iio = "cape-bone-iio";
58
+ write(fd, cape_bone_iio, strlen(cape_bone_iio));
59
+ close(fd);
60
+
61
+ return 0;
62
+ }
63
+ }
64
+
65
+ int adc_read(unsigned int ain, char * value, unsigned int length)
66
+ {
67
+ int fd, len;
68
+ char filepath[ADC_LEN];
69
+ snprintf(filepath, sizeof(filepath), "%s/in_voltage%d_raw", ADC_DIR, ain); // ie. /sys/bus/iio/devices/iio:device0/in_voltage0_raw
70
+
71
+ if((fd = open(filepath, O_RDONLY | O_NONBLOCK)) < 0)
72
+ return -1;
73
+
74
+ lseek(fd, 0, SEEK_SET);
75
+ read(fd, value, length);
76
+ close(fd);
77
+
78
+ return 0;
79
+ }
80
+
81
+ int adc_get_value(unsigned int ain, unsigned int * value)
82
+ {
83
+ const unsigned int length = 5;
84
+ char buffer[length];
85
+
86
+ if(adc_read(ain, buffer, length) < 0)
87
+ return -1;
88
+
89
+ *value = atoi(buffer);
90
+
91
+ return 0;
92
+ }
data/ext/bonekit/adc.h ADDED
@@ -0,0 +1,53 @@
1
+ /*
2
+
3
+ adc.h
4
+ BoneKit
5
+
6
+ Copyright (cc) 2012 Luis Laugga.
7
+ Some rights reserved, all wrongs deserved.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
10
+ this software and associated documentation files (the "Software"), to deal in
11
+ the Software without restriction, including without limitation the rights to
12
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
13
+ the Software, and to permit persons to whom the Software is furnished to do so,
14
+ subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
21
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
22
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
23
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+ */
27
+
28
+ #ifndef BONEKIT_ADC_H__
29
+ #define BONEKIT_ADC_H__
30
+
31
+ #ifdef __cplusplus
32
+ extern "C" {
33
+ #endif
34
+
35
+ #define ADC_DIR "/sys/bus/iio/devices/iio:device0"
36
+ #define ADC_LEN 64
37
+
38
+ #define ADC_MAX_VALUE 4095 // 12 bit ADC
39
+ #define ADC_MIN_VALUE 0
40
+
41
+ #define ADC_THRESHOLD 2048 // High, value > threshold
42
+
43
+ int adc_enabled(); // 1 if adc driver is enabled
44
+ int adc_enable();
45
+
46
+ int adc_read(unsigned int, char *, unsigned int);
47
+ int adc_get_value(unsigned int, unsigned int *);
48
+
49
+ #ifdef __cplusplus
50
+ }
51
+ #endif
52
+
53
+ #endif
@@ -0,0 +1,46 @@
1
+ /*
2
+
3
+ beaglebone.c
4
+ BoneKit
5
+
6
+ Copyright (cc) 2012 Luis Laugga.
7
+ Some rights reserved, all wrongs deserved.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
10
+ this software and associated documentation files (the "Software"), to deal in
11
+ the Software without restriction, including without limitation the rights to
12
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
13
+ the Software, and to permit persons to whom the Software is furnished to do so,
14
+ subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
21
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
22
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
23
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+ */
27
+
28
+ #include "beaglebone.h"
29
+
30
+ int beaglebone_gpio(const int b)
31
+ {
32
+ int gpio = (b & 0xff0000) >> 16;
33
+ return (gpio != 0xff ? gpio : -1);
34
+ }
35
+
36
+ int beaglebone_ain(const int b)
37
+ {
38
+ int ain = (b & 0x00ff00) >> 8;
39
+ return (ain != 0xff ? ain : -1);
40
+ }
41
+
42
+ int beaglebone_pwm_mux_mode(const int b)
43
+ {
44
+ int pwm_mux_mode = (b & 0x0000ff);
45
+ return (pwm_mux_mode != 0xff ? pwm_mux_mode : -1);
46
+ }
@@ -0,0 +1,141 @@
1
+ /*
2
+
3
+ beaglebone.h
4
+ BoneKit
5
+
6
+ Copyright (cc) 2012 Luis Laugga.
7
+ Some rights reserved, all wrongs deserved.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
10
+ this software and associated documentation files (the "Software"), to deal in
11
+ the Software without restriction, including without limitation the rights to
12
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
13
+ the Software, and to permit persons to whom the Software is furnished to do so,
14
+ subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
21
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
22
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
23
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+ */
27
+
28
+ #ifndef BONEKIT_BEAGLEBONE_H__
29
+ #define BONEKIT_BEAGLEBONE_H__
30
+
31
+ #ifdef __cplusplus
32
+ extern "C" {
33
+ #endif
34
+
35
+ // Bit mask = GPIO (0-7), AIN (8-15), PWM (16-23)
36
+ #define USR0 0x35ffff // USR0 { GPIO = 53 }
37
+ #define USR1 0x36ffff // USR1 { GPIO = 54 }
38
+ #define USR2 0x37ffff // USR2 { GPIO = 55 }
39
+ #define USR3 0x38ffff // USR3 { GPIO = 56 }
40
+ #define P8_1 0xffffff // DGND
41
+ #define P8_2 0xffffff // DGND
42
+ #define P8_3 0x26ffff // GPIO1_6 { GPIO = 38 }
43
+ #define P8_4 0x27ffff // GPIO1_7 { GPIO = 39 }
44
+ #define P8_5 0x22ffff // GPIO1_2 { GPIO = 34 }
45
+ #define P8_6 0x23ffff // GPIO1_3 { GPIO = 35 }
46
+ #define P8_7 0x42ffff // TIMER4 { GPIO = 66 }
47
+ #define P8_8 0x43ffff // TIMER7 { GPIO = 67 }
48
+ #define P8_9 0x45ffff // TIMER5 { GPIO = 69 }
49
+ #define P8_10 0x44ffff // TIMER6 { GPIO = 68 }
50
+ #define P8_11 0x2dffff // GPIO1_13 { GPIO = 45 }
51
+ #define P8_12 0x2cffff // GPIO1_12 { GPIO = 44 }
52
+ #define P8_13 0x17ff04 // EHRPWM2B { GPIO = 23, PWM_MUX_MODE = 4 }
53
+ #define P8_14 0x1affff // GPIO0_26 { GPIO = 26 }
54
+ #define P8_15 0x2fffff // GPIO1_15 { GPIO = 47 }
55
+ #define P8_16 0x2effff // GPIO1_14 { GPIO = 46 }
56
+ #define P8_17 0x1bffff // GPIO0_27 { GPIO = 27 }
57
+ #define P8_18 0x41ffff // GPIO2_1 { GPIO = 65 }
58
+ #define P8_19 0x16ff04 // EHRPWM2A { GPIO = 22, PWM_MUX_MODE = 4 }
59
+ #define P8_20 0x3fffff // GPIO1_31 { GPIO = 63 }
60
+ #define P8_21 0x3effff // GPIO1_30 { GPIO = 62 }
61
+ #define P8_22 0x25ffff // GPIO1_5 { GPIO = 37 }
62
+ #define P8_23 0x24ffff // GPIO1_4 { GPIO = 36 }
63
+ #define P8_24 0x21ffff // GPIO1_1 { GPIO = 33 }
64
+ #define P8_25 0x20ffff // GPIO1_0 { GPIO = 32 }
65
+ #define P8_26 0x3dffff // GPIO1_29 { GPIO = 61 }
66
+ #define P8_27 0x56ffff // GPIO2_22 { GPIO = 86 }
67
+ #define P8_28 0x58ffff // GPIO2_24 { GPIO = 88 }
68
+ #define P8_29 0x57ffff // GPIO2_23 { GPIO = 87 }
69
+ #define P8_30 0x59ffff // GPIO2_25 { GPIO = 89 }
70
+ #define P8_31 0x0affff // UART5_CTSN { GPIO = 10 }
71
+ #define P8_32 0x0bffff // UART5_RTSN { GPIO = 11 }
72
+ #define P8_33 0x09ffff // UART4_RTSN { GPIO = 9 }
73
+ #define P8_34 0x51ff02 // UART3_RTSN { GPIO = 81, PWM_MUX_MODE = 2 }
74
+ #define P8_35 0x08ffff // UART4_CTSN { GPIO = 8 }
75
+ #define P8_36 0x50ff02 // UART3_CTSN { GPIO = 80, PWM_MUX_MODE = 2 }
76
+ #define P8_37 0x4effff // UART5_TXD { GPIO = 78 }
77
+ #define P8_38 0x4fffff // UART5_RXD { GPIO = 79 }
78
+ #define P8_39 0x4cffff // GPIO2_12 { GPIO = 76 }
79
+ #define P8_40 0x4dffff // GPIO2_13 { GPIO = 77 }
80
+ #define P8_41 0x4affff // GPIO2_10 { GPIO = 74 }
81
+ #define P8_42 0x4bffff // GPIO2_11 { GPIO = 75 }
82
+ #define P8_43 0x48ffff // GPIO2_8 { GPIO = 72 }
83
+ #define P8_44 0x49ffff // GPIO2_9 { GPIO = 73 }
84
+ #define P8_45 0x46ff03 // GPIO2_6 { GPIO = 70, PWM_MUX_MODE = 3 }
85
+ #define P8_46 0x47ff03 // GPIO2_7 { GPIO = 71, PWM_MUX_MODE = 3 }
86
+ #define P9_1 0xffffff // DGND
87
+ #define P9_2 0xffffff // DGND
88
+ #define P9_3 0xffffff // VDD_3V3
89
+ #define P9_4 0xffffff // VDD_3V3
90
+ #define P9_5 0xffffff // VDD_5V
91
+ #define P9_6 0xffffff // VDD_5V
92
+ #define P9_7 0xffffff // SYS_5V
93
+ #define P9_8 0xffffff // SYS_5V
94
+ #define P9_9 0xffffff // PWR_BUT
95
+ #define P9_10 0xffffff // SYS_RESETn
96
+ #define P9_11 0x1effff // UART4_RXD { GPIO = 30 }
97
+ #define P9_12 0x3cffff // GPIO1_28 { GPIO = 60 }
98
+ #define P9_13 0x1fffff // UART4_TXD { GPIO = 31 }
99
+ #define P9_14 0x32ff06 // EHRPWM1A { GPIO = 50, PWM_MUX_MODE = 6 }
100
+ #define P9_15 0x30ffff // GPIO1_16 { GPIO = 48 }
101
+ #define P9_16 0x33ff06 // EHRPWM1B { GPIO = 51, PWM_MUX_MODE = 6 }
102
+ #define P9_17 0x05ffff // I2C1_SCL { GPIO = 5 }
103
+ #define P9_18 0x04ffff // I2C1_SDA { GPIO = 4 }
104
+ #define P9_19 0x0dffff // I2C2_SCL { GPIO = 13 }
105
+ #define P9_20 0x0cffff // I2C2_SDA { GPIO = 12 }
106
+ #define P9_21 0x03ff03 // UART2_TXD { GPIO = 3, PWM_MUX_MODE = 3 }
107
+ #define P9_22 0x02ff03 // UART2_RXD { GPIO = 2, PWM_MUX_MODE = 3 }
108
+ #define P9_23 0x31ffff // GPIO1_17 { GPIO = 49 }
109
+ #define P9_24 0x0fffff // UART1_TXD { GPIO = 15 }
110
+ #define P9_25 0x75ffff // GPIO3_21 { GPIO = 117 }
111
+ #define P9_26 0x0effff // UART1_RXD { GPIO = 14 }
112
+ #define P9_27 0x73ffff // GPIO3_19 { GPIO = 115 }
113
+ #define P9_28 0x71ff04 // SPI1_CS0 { GPIO = 113, PWM_MUX_MODE = 4 }
114
+ #define P9_29 0x6fff01 // SPI1_D0 { GPIO = 111, PWM_MUX_MODE = 1 }
115
+ #define P9_30 0x70ffff // SPI1_D1 { GPIO = 112 }
116
+ #define P9_31 0x6eff01 // SPI1_SCLK { GPIO = 110, PWM_MUX_MODE = 1 }
117
+ #define P9_32 0xffffff // VDD_ADC
118
+ #define P9_33 0xff04ff // AIN4 { AIN = 4 }
119
+ #define P9_34 0xffffff // GNDA_ADC
120
+ #define P9_35 0xff06ff // AIN6 { AIN = 6 }
121
+ #define P9_36 0xff05ff // AIN5 { AIN = 5 }
122
+ #define P9_37 0xff02ff // AIN2 { AIN = 2 }
123
+ #define P9_38 0xff03ff // AIN3 { AIN = 3 }
124
+ #define P9_39 0xff00ff // AIN0 { AIN = 0 }
125
+ #define P9_40 0xff01ff // AIN1 { AIN = 1 }
126
+ #define P9_41 0x14ffff // CLKOUT2 { GPIO = 20 }
127
+ #define P9_42 0x07ff00 // GPIO0_7 { GPIO = 7, PWM_MUX_MODE = 0 }
128
+ #define P9_43 0xffffff // DGND
129
+ #define P9_44 0xffffff // DGND
130
+ #define P9_45 0xffffff // DGND
131
+ #define P9_46 0xffffff // DGND
132
+
133
+ int beaglebone_gpio(const int);
134
+ int beaglebone_ain(const int);
135
+ int beaglebone_pwm_mux_mode(const int);
136
+
137
+ #ifdef __cplusplus
138
+ }
139
+ #endif
140
+
141
+ #endif