pigpio 0.1.11 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
 - data/.standard_todo.yml +51 -0
 - data/README.md +1 -1
 - data/Rakefile +3 -4
 - data/ext/pigpio/extconf.rb +5 -5
 - data/ext/pigpio/pigpio.c +10 -4
 - data/lib/pigpio/bank.rb +25 -22
 - data/lib/pigpio/bit_bang_serial.rb +21 -19
 - data/lib/pigpio/bit_bang_serial_rx.rb +70 -19
 - data/lib/pigpio/bit_bang_serial_tx.rb +47 -41
 - data/lib/pigpio/buffer.rb +13 -12
 - data/lib/pigpio/constant.rb +745 -748
 - data/lib/pigpio/gpio.rb +37 -30
 - data/lib/pigpio/i2c.rb +77 -60
 - data/lib/pigpio/pwm.rb +48 -38
 - data/lib/pigpio/serial.rb +35 -29
 - data/lib/pigpio/spi.rb +37 -33
 - data/lib/pigpio/user_gpio.rb +33 -27
 - data/lib/pigpio/version.rb +1 -1
 - data/lib/pigpio/wave.rb +100 -78
 - data/lib/pigpio.rb +28 -18
 - data/pigpio.gemspec +16 -17
 - metadata +18 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: ea48e2455183f291ab01d01923f98291d1fc3cbdac8237e0bfb47c6918f1b94d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4734cdafc9f127194a972f6fbe366a5c7be1554837d6bd4829ea9ce5ecf56b0f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 86aba3d72fe106c69facc776e655fb6237cbeb2ccb63ee00de8a4e7f5678f14f1dbdd3727b3d48539f6c75e06d61083a2711854d642d6799edf03d82155e3717
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 19750b1ea68bd3fabbe2036fcba8924aded9edcf2e46c0a2fd3bf654d4920006729cdd051ed5cd6886c5affeeea433454968c7b774a6bd4eaba4a437020f7f02
         
     | 
    
        data/.standard_todo.yml
    ADDED
    
    | 
         @@ -0,0 +1,51 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Auto generated files with errors to ignore.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Remove from this list as you refactor files.
         
     | 
| 
      
 3 
     | 
    
         
            +
            ---
         
     | 
| 
      
 4 
     | 
    
         
            +
            ignore:
         
     | 
| 
      
 5 
     | 
    
         
            +
            - example/e-paper_spi/epd2in13b.rb:
         
     | 
| 
      
 6 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 7 
     | 
    
         
            +
            - example/loopback/spi.rb:
         
     | 
| 
      
 8 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 9 
     | 
    
         
            +
              - Lint/UselessAssignment
         
     | 
| 
      
 10 
     | 
    
         
            +
            - example/loopback/uart.rb:
         
     | 
| 
      
 11 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 12 
     | 
    
         
            +
              - Lint/UselessAssignment
         
     | 
| 
      
 13 
     | 
    
         
            +
            - example/sharp_memory_display/ls013b7dn05.rb:
         
     | 
| 
      
 14 
     | 
    
         
            +
              - Lint/UselessAssignment
         
     | 
| 
      
 15 
     | 
    
         
            +
              - Style/SafeNavigation
         
     | 
| 
      
 16 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 17 
     | 
    
         
            +
            - example/simple/callback.rb:
         
     | 
| 
      
 18 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 19 
     | 
    
         
            +
            - example/simple/led.rb:
         
     | 
| 
      
 20 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 21 
     | 
    
         
            +
            - example/simple/pwm.rb:
         
     | 
| 
      
 22 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 23 
     | 
    
         
            +
              - Style/InfiniteLoop
         
     | 
| 
      
 24 
     | 
    
         
            +
            - example/simple/wave.rb:
         
     | 
| 
      
 25 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 26 
     | 
    
         
            +
            - example/ssd1306_i2c/ssd1306.rb:
         
     | 
| 
      
 27 
     | 
    
         
            +
              - Style/MixinUsage
         
     | 
| 
      
 28 
     | 
    
         
            +
            - lib/pigpio.rb:
         
     | 
| 
      
 29 
     | 
    
         
            +
              - Naming/VariableName
         
     | 
| 
      
 30 
     | 
    
         
            +
            - lib/pigpio/bank.rb:
         
     | 
| 
      
 31 
     | 
    
         
            +
              - Naming/ConstantName
         
     | 
| 
      
 32 
     | 
    
         
            +
            - lib/pigpio/constant.rb:
         
     | 
| 
      
 33 
     | 
    
         
            +
              - Naming/ConstantName
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/pigpio/gpio.rb:
         
     | 
| 
      
 35 
     | 
    
         
            +
              - Lint/UselessAssignment
         
     | 
| 
      
 36 
     | 
    
         
            +
              - Naming/VariableName
         
     | 
| 
      
 37 
     | 
    
         
            +
            - lib/pigpio/i2c.rb:
         
     | 
| 
      
 38 
     | 
    
         
            +
              - Naming/VariableName
         
     | 
| 
      
 39 
     | 
    
         
            +
            - lib/pigpio/pwm.rb:
         
     | 
| 
      
 40 
     | 
    
         
            +
              - Lint/UselessAssignment
         
     | 
| 
      
 41 
     | 
    
         
            +
            - lib/pigpio/serial.rb:
         
     | 
| 
      
 42 
     | 
    
         
            +
              - Naming/ConstantName
         
     | 
| 
      
 43 
     | 
    
         
            +
              - Lint/UselessAssignment
         
     | 
| 
      
 44 
     | 
    
         
            +
              - Naming/VariableName
         
     | 
| 
      
 45 
     | 
    
         
            +
            - lib/pigpio/spi.rb:
         
     | 
| 
      
 46 
     | 
    
         
            +
              - Naming/VariableName
         
     | 
| 
      
 47 
     | 
    
         
            +
            - lib/pigpio/user_gpio.rb:
         
     | 
| 
      
 48 
     | 
    
         
            +
              - Lint/UselessAssignment
         
     | 
| 
      
 49 
     | 
    
         
            +
              - Naming/VariableName
         
     | 
| 
      
 50 
     | 
    
         
            +
            - spec/ext/extconf.rb:
         
     | 
| 
      
 51 
     | 
    
         
            +
              - Style/GlobalVars
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -65,7 +65,7 @@ More sample for this circuit. : [Hare](./example/simple/readme.md) 
     | 
|
| 
       65 
65 
     | 
    
         | 
| 
       66 
66 
     | 
    
         
             
            More sample for other circuit. : [Hare](./example/readme.md)
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
            More document : [GitHub Pages](https://nak1114.github.io/ruby-extension-pigpio/)
         
     | 
| 
      
 68 
     | 
    
         
            +
            More document : [GitHub Pages](https://nak1114.github.io/ruby-extension-pigpio/Pigpio/IF.html)
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
            ## Development
         
     | 
| 
       71 
71 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -9,10 +9,9 @@ end 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            RSpec::Core::RakeTask.new(:spec)
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            task : 
     | 
| 
      
 12 
     | 
    
         
            +
            task default: :spec
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            RDOC_FILES = FileList["ext/pigpio/pigpio.c","lib/**/*.rb"]
         
     | 
| 
      
 14 
     | 
    
         
            +
            RDOC_FILES = FileList["ext/pigpio/pigpio.c", "lib/**/*.rb"]
         
     | 
| 
       16 
15 
     | 
    
         | 
| 
       17 
16 
     | 
    
         
             
            Rake::RDocTask.new do |rd|
         
     | 
| 
       18 
17 
     | 
    
         
             
              rd.main = "pigpio.c"
         
     | 
| 
         @@ -33,4 +32,4 @@ end 
     | 
|
| 
       33 
32 
     | 
    
         
             
            task :reset do
         
     | 
| 
       34 
33 
     | 
    
         
             
              sh "git fetch origin"
         
     | 
| 
       35 
34 
     | 
    
         
             
              sh "git reset --hard origin/master"
         
     | 
| 
       36 
     | 
    
         
            -
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
    
        data/ext/pigpio/extconf.rb
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
            dir_config( 
     | 
| 
       3 
     | 
    
         
            -
            if find_header( 
     | 
| 
       4 
     | 
    
         
            -
              create_makefile( 
     | 
| 
       5 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require "mkmf"
         
     | 
| 
      
 2 
     | 
    
         
            +
            dir_config("pigpio")
         
     | 
| 
      
 3 
     | 
    
         
            +
            if find_header("pigpiod_if2.h", "/usr/include/") && find_library("pigpiod_if2", "gpio_read", "/usr/lib/")
         
     | 
| 
      
 4 
     | 
    
         
            +
              create_makefile("pigpio/pigpio")
         
     | 
| 
      
 5 
     | 
    
         
            +
            end
         
     | 
    
        data/ext/pigpio/pigpio.c
    CHANGED
    
    | 
         @@ -3829,13 +3829,15 @@ void Init_pigpio(void){ 
     | 
|
| 
       3829 
3829 
     | 
    
         
             
              /*
         
     | 
| 
       3830 
3830 
     | 
    
         
             
              This class wrap gpioPulse_t.
         
     | 
| 
       3831 
3831 
     | 
    
         
             
              */
         
     | 
| 
       3832 
     | 
    
         
            -
              cPulse = rb_define_class_under(cPigpio,"Pulse",  
     | 
| 
      
 3832 
     | 
    
         
            +
              cPulse = rb_define_class_under(cPigpio,"Pulse", rb_cObject);
         
     | 
| 
      
 3833 
     | 
    
         
            +
                rb_undef_alloc_func(cPulse);
         
     | 
| 
       3833 
3834 
     | 
    
         
             
                rb_define_singleton_method(cPulse, "make", pigpio_rbst_gpioPulse_make, 3);
         
     | 
| 
       3834 
3835 
     | 
    
         | 
| 
       3835 
3836 
     | 
    
         
             
              /*
         
     | 
| 
       3836 
3837 
     | 
    
         
             
              This class wrap bsc_xfer_t.
         
     | 
| 
       3837 
3838 
     | 
    
         
             
              */
         
     | 
| 
       3838 
     | 
    
         
            -
              cBscXfer = rb_define_class_under(cPigpio,"BscXfer",  
     | 
| 
      
 3839 
     | 
    
         
            +
              cBscXfer = rb_define_class_under(cPigpio,"BscXfer", rb_cObject);
         
     | 
| 
      
 3840 
     | 
    
         
            +
                rb_undef_alloc_func(cBscXfer);
         
     | 
| 
       3839 
3841 
     | 
    
         
             
                rb_define_singleton_method(cBscXfer, "make", pigpio_rbst_bsc_xfer_make, 0);
         
     | 
| 
       3840 
3842 
     | 
    
         
             
                rb_define_method(cBscXfer, "control=", pigpio_rbst_bsc_xfer_w_control, 1);
         
     | 
| 
       3841 
3843 
     | 
    
         
             
                rb_define_method(cBscXfer, "control", pigpio_rbst_bsc_xfer_r_control, 0);
         
     | 
| 
         @@ -3847,13 +3849,15 @@ void Init_pigpio(void){ 
     | 
|
| 
       3847 
3849 
     | 
    
         
             
              /*
         
     | 
| 
       3848 
3850 
     | 
    
         
             
              The class of native queue.
         
     | 
| 
       3849 
3851 
     | 
    
         
             
              */
         
     | 
| 
       3850 
     | 
    
         
            -
              cNativeQueue = rb_define_class_under(cAPI,"NativeQueue",  
     | 
| 
      
 3852 
     | 
    
         
            +
              cNativeQueue = rb_define_class_under(cAPI,"NativeQueue", rb_cObject);
         
     | 
| 
      
 3853 
     | 
    
         
            +
                rb_undef_alloc_func(cNativeQueue);
         
     | 
| 
       3851 
3854 
     | 
    
         
             
                rb_gc_register_address(&cNativeQueue);
         
     | 
| 
       3852 
3855 
     | 
    
         | 
| 
       3853 
3856 
     | 
    
         
             
              /*
         
     | 
| 
       3854 
3857 
     | 
    
         
             
              The class of callback.
         
     | 
| 
       3855 
3858 
     | 
    
         
             
              */
         
     | 
| 
       3856 
     | 
    
         
            -
              cCallbackID = rb_define_class_under(cPigpio,"Callback",  
     | 
| 
      
 3859 
     | 
    
         
            +
              cCallbackID = rb_define_class_under(cPigpio,"Callback", rb_cObject);
         
     | 
| 
      
 3860 
     | 
    
         
            +
                rb_undef_alloc_func(cCallbackID);
         
     | 
| 
       3857 
3861 
     | 
    
         
             
                rb_define_method(cCallbackID, "id", pigpio_rbst_callback_id_r_id, 0);
         
     | 
| 
       3858 
3862 
     | 
    
         
             
                rb_define_method(cCallbackID, "cancel", pigpio_rbst_callback_id_cancel, 0);
         
     | 
| 
       3859 
3863 
     | 
    
         
             
                rb_gc_register_address(&cCallbackID);
         
     | 
| 
         @@ -3862,11 +3866,13 @@ void Init_pigpio(void){ 
     | 
|
| 
       3862 
3866 
     | 
    
         
             
              The class of callback error.
         
     | 
| 
       3863 
3867 
     | 
    
         
             
              */
         
     | 
| 
       3864 
3868 
     | 
    
         
             
              cCallbackError = rb_define_class_under(cPigpio,"CallbackError", rb_eException);
         
     | 
| 
      
 3869 
     | 
    
         
            +
                rb_undef_alloc_func(cCallbackError);
         
     | 
| 
       3865 
3870 
     | 
    
         
             
                rb_gc_register_address(&cCallbackError);
         
     | 
| 
       3866 
3871 
     | 
    
         | 
| 
       3867 
3872 
     | 
    
         
             
              /*
         
     | 
| 
       3868 
3873 
     | 
    
         
             
              The class of Rx buffer.
         
     | 
| 
       3869 
3874 
     | 
    
         
             
              */
         
     | 
| 
       3870 
3875 
     | 
    
         
             
              cBuffer = rb_define_class_under(cPigpio,"Buffer", rb_cString);
         
     | 
| 
      
 3876 
     | 
    
         
            +
                rb_undef_alloc_func(cBuffer);
         
     | 
| 
       3871 
3877 
     | 
    
         
             
                rb_gc_register_address(&cBuffer);
         
     | 
| 
       3872 
3878 
     | 
    
         
             
            }
         
     | 
    
        data/lib/pigpio/bank.rb
    CHANGED
    
    | 
         @@ -1,22 +1,25 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Pigpio
         
     | 
| 
       2 
     | 
    
         
            -
              class Bank
         
     | 
| 
       3 
     | 
    
         
            -
                Set={
         
     | 
| 
       4 
     | 
    
         
            -
                  read: 
     | 
| 
       5 
     | 
    
         
            -
                  clear: [:clear_bank_1 
     | 
| 
       6 
     | 
    
         
            -
                  set: 
     | 
| 
       7 
     | 
    
         
            -
                }
         
     | 
| 
       8 
     | 
    
         
            -
                def initialize(pi,num)
         
     | 
| 
       9 
     | 
    
         
            -
                  @pi=pi
         
     | 
| 
       10 
     | 
    
         
            -
                  @num=num
         
     | 
| 
       11 
     | 
    
         
            -
                end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            class Pigpio
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Bank
         
     | 
| 
      
 3 
     | 
    
         
            +
                Set = {
         
     | 
| 
      
 4 
     | 
    
         
            +
                  read: [:read_bank_1, :read_bank_2],
         
     | 
| 
      
 5 
     | 
    
         
            +
                  clear: [:clear_bank_1, :clear_bank_2],
         
     | 
| 
      
 6 
     | 
    
         
            +
                  set: [:set_bank_1, :set_bank_2]
         
     | 
| 
      
 7 
     | 
    
         
            +
                }
         
     | 
| 
      
 8 
     | 
    
         
            +
                def initialize(pi, num)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @pi = pi
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @num = num
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def read
         
     | 
| 
      
 14 
     | 
    
         
            +
                  IF.send(Set[:read][@num], @pi)
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def clear(bits)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  IF.send(Set[:clear][@num], @pi, bits)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def set(bits)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  IF.send(Set[:set][@num], @pi, bits)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,19 +1,21 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "./bit_bang_serial_rx"
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative "./bit_bang_serial_tx"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class Pigpio
         
     | 
| 
       5 
     | 
    
         
            -
              class BitBangSerial < BitBangSerialTx
         
     | 
| 
       6 
     | 
    
         
            -
                attr_reader :rx
         
     | 
| 
       7 
     | 
    
         
            -
                def initialize(rx,tx,baud=9600,data_bits=8,stop_bits=1,parity_type 
     | 
| 
       8 
     | 
    
         
            -
                  super(tx,baud,data_bits,stop_bits)
         
     | 
| 
       9 
     | 
    
         
            -
                  @rx=BitBangSerialRx.new(rx,baud,data_bits)
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                   
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require_relative "./bit_bang_serial_rx"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require_relative "./bit_bang_serial_tx"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            class Pigpio
         
     | 
| 
      
 5 
     | 
    
         
            +
              class BitBangSerial < BitBangSerialTx
         
     | 
| 
      
 6 
     | 
    
         
            +
                attr_reader :rx
         
     | 
| 
      
 7 
     | 
    
         
            +
                def initialize(rx, tx, baud = 9600, data_bits = 8, stop_bits = 1, parity_type = :none)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  super(tx, baud, data_bits, stop_bits)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @rx = BitBangSerialRx.new(rx, baud, data_bits)
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def close
         
     | 
| 
      
 13 
     | 
    
         
            +
                  super
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @rx.close
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def read(bufsize = 1)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @rx.read(bufsize)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,19 +1,70 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Pigpio
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
       12 
     | 
    
         
            -
                 
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            class Pigpio
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Set a UserGPIO pin as a serial Rx.
         
     | 
| 
      
 3 
     | 
    
         
            +
              class BitBangSerialRx
         
     | 
| 
      
 4 
     | 
    
         
            +
                # UserGPIO#.
         
     | 
| 
      
 5 
     | 
    
         
            +
                #
         
     | 
| 
      
 6 
     | 
    
         
            +
                # This attribute is set at the time of ::new.
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_reader :rx
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                # Set 0 if OK, otherwise PI_BAD_USER_GPIO, PI_BAD_WAVE_BAUD, PI_GPIO_IN_USE, PI_NOT_SERIAL_GPIO or PI_BAD_SER_INVERT.
         
     | 
| 
      
 10 
     | 
    
         
            +
                #
         
     | 
| 
      
 11 
     | 
    
         
            +
                # This attribute is set at the time of ::new.
         
     | 
| 
      
 12 
     | 
    
         
            +
                attr_reader :valid
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                # Set a UserGPIO pin as a serial Rx.
         
     | 
| 
      
 15 
     | 
    
         
            +
                #
         
     | 
| 
      
 16 
     | 
    
         
            +
                # The serial data recieves in a internal cyclic buffer and is read using #read method.
         
     | 
| 
      
 17 
     | 
    
         
            +
                # It is the caller's responsibility to read data from the cyclic buffer in a timely fashion.
         
     | 
| 
      
 18 
     | 
    
         
            +
                #
         
     | 
| 
      
 19 
     | 
    
         
            +
                # [Parameter]
         
     | 
| 
      
 20 
     | 
    
         
            +
                #  [rx [ Pigpio::UserGPIO ]] Set This pgio as a serial Rx.
         
     | 
| 
      
 21 
     | 
    
         
            +
                #  [baud [ Integer ]] 50-250000 [bps]. default 9600.
         
     | 
| 
      
 22 
     | 
    
         
            +
                #  [data_bits [ Integer ]] 1-32 [bit/word]. default 8.
         
     | 
| 
      
 23 
     | 
    
         
            +
                #
         
     | 
| 
      
 24 
     | 
    
         
            +
                # See also: {pigpio site}[http://abyz.me.uk/rpi/pigpio/pdif2.html#bb_serial_read_open]
         
     | 
| 
      
 25 
     | 
    
         
            +
                def initialize(rx, baud = 9600, data_bits = 8)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @rx = rx
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @valid = IF.bb_serial_read_open(@rx.pi, @rx.gpio, baud, data_bits)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  if @valid == 0
         
     | 
| 
      
 29 
     | 
    
         
            +
                    @valid = IF.bb_serial_invert(@rx.pi, @rx.gpio, 0)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                # This method closes a GPIO for bit bang reading of serial data.
         
     | 
| 
      
 34 
     | 
    
         
            +
                #
         
     | 
| 
      
 35 
     | 
    
         
            +
                # [Return] [Integer] Returns 0 if OK, otherwise PI_BAD_USER_GPIO, or PI_NOT_SERIAL_GPIO.
         
     | 
| 
      
 36 
     | 
    
         
            +
                #
         
     | 
| 
      
 37 
     | 
    
         
            +
                # See also: {pigpio site}[http://abyz.me.uk/rpi/pigpio/pdif2.html#bb_serial_read_close]
         
     | 
| 
      
 38 
     | 
    
         
            +
                def close
         
     | 
| 
      
 39 
     | 
    
         
            +
                  IF.bb_serial_read_close(@rx.pi, @rx.gpio)
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                # This method copies up to bufSize bytes of data read from the bit bang serial cyclic buffer to the buffer starting at returned value.
         
     | 
| 
      
 43 
     | 
    
         
            +
                #
         
     | 
| 
      
 44 
     | 
    
         
            +
                # [Parameter] [bufSize [ Integer ]] How many bytes receive.
         
     | 
| 
      
 45 
     | 
    
         
            +
                # [Return] [ Pigpio::Buffer ] A copied buffer and status.
         
     | 
| 
      
 46 
     | 
    
         
            +
                #
         
     | 
| 
      
 47 
     | 
    
         
            +
                # The details of the returned status is the number of bytes copied if OK, otherwise PI_BAD_USER_GPIO or PI_NOT_SERIAL_GPIO.
         
     | 
| 
      
 48 
     | 
    
         
            +
                #
         
     | 
| 
      
 49 
     | 
    
         
            +
                # The bytes returned for each character depend upon the number of data bits +data_bits+ specified in the ::new method.
         
     | 
| 
      
 50 
     | 
    
         
            +
                #
         
     | 
| 
      
 51 
     | 
    
         
            +
                # * For +data_bits+ 1-8 there will be one byte per character.
         
     | 
| 
      
 52 
     | 
    
         
            +
                # * For +data_bits+ 9-16 there will be two bytes per character.
         
     | 
| 
      
 53 
     | 
    
         
            +
                # * For +data_bits+ 17-32 there will be four bytes per character.
         
     | 
| 
      
 54 
     | 
    
         
            +
                #
         
     | 
| 
      
 55 
     | 
    
         
            +
                # See also: {pigpio site}[http://abyz.me.uk/rpi/pigpio/pdif2.html#bb_serial_read]
         
     | 
| 
      
 56 
     | 
    
         
            +
                def read(bufsize = 1)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  IF.bb_serial_read(@rx.pi, @rx.gpio, bufsize)
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                # This method inverts serial logic for big bang serial reads.
         
     | 
| 
      
 61 
     | 
    
         
            +
                #
         
     | 
| 
      
 62 
     | 
    
         
            +
                # [Parameter] [Integer] invert 0-1.1 invert, 0 normal.
         
     | 
| 
      
 63 
     | 
    
         
            +
                # [Return] [Integer] Returns 0 if OK, otherwise PI_NOT_SERIAL_GPIO or PI_BAD_SER_INVERT.
         
     | 
| 
      
 64 
     | 
    
         
            +
                #
         
     | 
| 
      
 65 
     | 
    
         
            +
                # See also: {pigpio site}[http://abyz.me.uk/rpi/pigpio/pdif2.html#bb_serial_invert]
         
     | 
| 
      
 66 
     | 
    
         
            +
                def invert(invert = 1)
         
     | 
| 
      
 67 
     | 
    
         
            +
                  IF.bb_serial_invert(@rx.pi, @rx.gpio, invert)
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
              end
         
     | 
| 
      
 70 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,41 +1,47 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Pigpio
         
     | 
| 
       2 
     | 
    
         
            -
              class BitBangSerialTx
         
     | 
| 
       3 
     | 
    
         
            -
                attr_reader :tx
         
     | 
| 
       4 
     | 
    
         
            -
                def initialize(tx,baud=9600,data_bits=8,stop_bits=1)
         
     | 
| 
       5 
     | 
    
         
            -
                  @tx=tx
         
     | 
| 
       6 
     | 
    
         
            -
                  @baud=baud
         
     | 
| 
       7 
     | 
    
         
            -
                  @data_bits=data_bits
         
     | 
| 
       8 
     | 
    
         
            -
                  @stop_half_bits=(stop_bits*2).round.to_i
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  IF. 
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                   
     | 
| 
       18 
     | 
    
         
            -
                   
     | 
| 
       19 
     | 
    
         
            -
                   
     | 
| 
       20 
     | 
    
         
            -
                  return  
     | 
| 
       21 
     | 
    
         
            -
                  IF. 
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                   
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                   
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                 
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                 
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            class Pigpio
         
     | 
| 
      
 2 
     | 
    
         
            +
              class BitBangSerialTx
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :tx
         
     | 
| 
      
 4 
     | 
    
         
            +
                def initialize(tx, baud = 9600, data_bits = 8, stop_bits = 1)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  @tx = tx
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @baud = baud
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @data_bits = data_bits
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @stop_half_bits = (stop_bits * 2).round.to_i
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def close
         
     | 
| 
      
 12 
     | 
    
         
            +
                  IF.wave_tx_stop(@tx.pi) if busy?
         
     | 
| 
      
 13 
     | 
    
         
            +
                  IF.wave_clear(@tx.pi)
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def write(buf)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  IF.wave_clear(@tx.pi)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  IF.wave_add_new(@tx.pi)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  ret = IF.wave_add_serial(@tx.pi, @tx.gpio, @baud, @data_bits, @stop_half_bits, 0, buf)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  return ret if ret < 0
         
     | 
| 
      
 21 
     | 
    
         
            +
                  wid = IF.wave_create(@tx.pi)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  return wid if wid < 0
         
     | 
| 
      
 23 
     | 
    
         
            +
                  IF.wave_send_once(@tx.pi, wid)
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def sync
         
     | 
| 
      
 27 
     | 
    
         
            +
                  while busy?
         
     | 
| 
      
 28 
     | 
    
         
            +
                    sleep 0.1
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                def write_sync(buf)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  ret = write(buf)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  return ret if ret < 0
         
     | 
| 
      
 35 
     | 
    
         
            +
                  sync
         
     | 
| 
      
 36 
     | 
    
         
            +
                  IF.wave_clear(@tx.pi)
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                def busy?
         
     | 
| 
      
 40 
     | 
    
         
            +
                  IF.wave_tx_busy(@tx.pi)
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def stop
         
     | 
| 
      
 44 
     | 
    
         
            +
                  IF.wave_tx_stop(@tx.pi)
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/pigpio/buffer.rb
    CHANGED
    
    | 
         @@ -1,12 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Pigpio
         
     | 
| 
       2 
     | 
    
         
            -
              class Buffer < String
         
     | 
| 
       3 
     | 
    
         
            -
                attr_reader :ret_code
         
     | 
| 
       4 
     | 
    
         
            -
                def initialize(ret_code,str=nil)
         
     | 
| 
       5 
     | 
    
         
            -
                  super(str)
         
     | 
| 
       6 
     | 
    
         
            -
                  @ret_code=ret_code
         
     | 
| 
       7 
     | 
    
         
            -
                end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            class Pigpio
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Buffer < String
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :ret_code
         
     | 
| 
      
 4 
     | 
    
         
            +
                def initialize(ret_code, str = nil)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  super(str)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @ret_code = ret_code
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def valid?
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @ret_code >= 0
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     |