rsmp 0.20.7 → 0.21.0
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 +4 -4
 - data/Gemfile.lock +1 -1
 - data/lib/rsmp/node.rb +5 -5
 - data/lib/rsmp/tlc/traffic_controller.rb +40 -0
 - data/lib/rsmp/tlc/traffic_controller_site.rb +2 -2
 - data/lib/rsmp/version.rb +1 -1
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 3d74ffd79480198d71bde613b754e2ab6195e7e793ed7294f192752df001c528
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 417ff3b2692fae04709d688225b12b26fe1e69c189206855545a26b8e993f1c2
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 661ccaa898f510a89c039f5c678e2fa796ac8efb152c6c6d0945a89afcfb111013744fa0fd8bd341d7103e47ddc9da94f55e9211b2cda16a2ee94456b72e5e8a
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 2d2586aeec689c66fdb19d3548f1cf2f06131fadadab8a919cd894f9ca178d822b6522c7de72d235ecd35b919236ae42cf9b42c22287713bdd2a9dfd109eaf36
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/lib/rsmp/node.rb
    CHANGED
    
    | 
         @@ -44,19 +44,19 @@ module RSMP 
     | 
|
| 
       44 
44 
     | 
    
         
             
                  @error_queue.enqueue e
         
     | 
| 
       45 
45 
     | 
    
         
             
                end
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                def defer item
         
     | 
| 
       48 
     | 
    
         
            -
                  @deferred << item
         
     | 
| 
      
 47 
     | 
    
         
            +
                def defer key, item=nil
         
     | 
| 
      
 48 
     | 
    
         
            +
                  @deferred << [key, item]
         
     | 
| 
       49 
49 
     | 
    
         
             
                end
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
       51 
51 
     | 
    
         
             
                def process_deferred
         
     | 
| 
       52 
52 
     | 
    
         
             
                  cloned = @deferred.clone    # clone in case do_deferred restarts the current task
         
     | 
| 
       53 
53 
     | 
    
         
             
                  @deferred.clear
         
     | 
| 
       54 
     | 
    
         
            -
                  cloned.each do | 
     | 
| 
       55 
     | 
    
         
            -
                    do_deferred  
     | 
| 
      
 54 
     | 
    
         
            +
                  cloned.each do |pair|
         
     | 
| 
      
 55 
     | 
    
         
            +
                    do_deferred pair.first, pair.last
         
     | 
| 
       56 
56 
     | 
    
         
             
                  end
         
     | 
| 
       57 
57 
     | 
    
         
             
                end
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
                def do_deferred item
         
     | 
| 
      
 59 
     | 
    
         
            +
                def do_deferred key,item=nil
         
     | 
| 
       60 
60 
     | 
    
         
             
                end
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
                def clear_deferred
         
     | 
| 
         @@ -344,6 +344,45 @@ module RSMP 
     | 
|
| 
       344 
344 
     | 
    
         | 
| 
       345 
345 
     | 
    
         
             
                  def handle_m0013 arg, options={}
         
     | 
| 
       346 
346 
     | 
    
         
             
                    @node.verify_security_code 2, arg['securityCode']
         
     | 
| 
      
 347 
     | 
    
         
            +
                    set, clear = [], []
         
     | 
| 
      
 348 
     | 
    
         
            +
                    arg['status'].split(';').map do |part|
         
     | 
| 
      
 349 
     | 
    
         
            +
                      offset, set_bits, clear_bits = part.split(',').map { |i| i.to_i }
         
     | 
| 
      
 350 
     | 
    
         
            +
                      set_bits.to_s(2).reverse.each_char.with_index do |bit,i|
         
     | 
| 
      
 351 
     | 
    
         
            +
                        set << i + offset if bit == '1'
         
     | 
| 
      
 352 
     | 
    
         
            +
                      end
         
     | 
| 
      
 353 
     | 
    
         
            +
                      clear_bits.to_s(2).reverse.each_char.with_index do |bit,i|
         
     | 
| 
      
 354 
     | 
    
         
            +
                        clear << i + offset if bit == '1'
         
     | 
| 
      
 355 
     | 
    
         
            +
                      end
         
     | 
| 
      
 356 
     | 
    
         
            +
                    end
         
     | 
| 
      
 357 
     | 
    
         
            +
             
     | 
| 
      
 358 
     | 
    
         
            +
                    set = set.uniq.sort
         
     | 
| 
      
 359 
     | 
    
         
            +
                    clear = clear.uniq.sort
         
     | 
| 
      
 360 
     | 
    
         
            +
             
     | 
| 
      
 361 
     | 
    
         
            +
                    # if input is both activated and deacticvated, there is no need to acticate first
         
     | 
| 
      
 362 
     | 
    
         
            +
                    set -= (set & clear)
         
     | 
| 
      
 363 
     | 
    
         
            +
             
     | 
| 
      
 364 
     | 
    
         
            +
                    [set,clear].each do |inputs|
         
     | 
| 
      
 365 
     | 
    
         
            +
                      inputs.each do |input|
         
     | 
| 
      
 366 
     | 
    
         
            +
                        if input<1
         
     | 
| 
      
 367 
     | 
    
         
            +
                        raise MessageRejected.new("Cannot acticate inputs #{set} and deactive inputs #{clear}: input #{input} is invalid (must be 1 or higher)"
         
     | 
| 
      
 368 
     | 
    
         
            +
                          ) if input<1
         
     | 
| 
      
 369 
     | 
    
         
            +
                        end
         
     | 
| 
      
 370 
     | 
    
         
            +
                        if input>@inputs.size
         
     | 
| 
      
 371 
     | 
    
         
            +
                          raise MessageRejected.new("Cannot acticate inputs #{set} and deactive inputs #{clear}: input #{input} is invalid (only #{@inputs.size} inputs present)")
         
     | 
| 
      
 372 
     | 
    
         
            +
                        end
         
     | 
| 
      
 373 
     | 
    
         
            +
                      end
         
     | 
| 
      
 374 
     | 
    
         
            +
                    end
         
     | 
| 
      
 375 
     | 
    
         
            +
             
     | 
| 
      
 376 
     | 
    
         
            +
                    log "Activating inputs #{set} and deactivating inputs #{clear}", level: :info
         
     | 
| 
      
 377 
     | 
    
         
            +
             
     | 
| 
      
 378 
     | 
    
         
            +
                    set.each do |input|
         
     | 
| 
      
 379 
     | 
    
         
            +
                      change = @inputs.set input, true
         
     | 
| 
      
 380 
     | 
    
         
            +
                      input_logic input, change if change != nil
         
     | 
| 
      
 381 
     | 
    
         
            +
                    end
         
     | 
| 
      
 382 
     | 
    
         
            +
                    clear.each do |input|
         
     | 
| 
      
 383 
     | 
    
         
            +
                      change = @inputs.set input, false
         
     | 
| 
      
 384 
     | 
    
         
            +
                      input_logic input, change if change != nil
         
     | 
| 
      
 385 
     | 
    
         
            +
                    end
         
     | 
| 
       347 
386 
     | 
    
         
             
                  end
         
     | 
| 
       348 
387 
     | 
    
         | 
| 
       349 
388 
     | 
    
         
             
                  def find_plan plan_nr
         
     | 
| 
         @@ -432,6 +471,7 @@ module RSMP 
     | 
|
| 
       432 
471 
     | 
    
         
             
                      log "Releasing input #{input}", level: :info
         
     | 
| 
       433 
472 
     | 
    
         
             
                    end
         
     | 
| 
       434 
473 
     | 
    
         
             
                    change = @inputs.set_forcing input, force, forced_value
         
     | 
| 
      
 474 
     | 
    
         
            +
             
     | 
| 
       435 
475 
     | 
    
         
             
                    input_logic input, change if change != nil
         
     | 
| 
       436 
476 
     | 
    
         
             
                  end
         
     | 
| 
       437 
477 
     | 
    
         | 
    
        data/lib/rsmp/version.rb
    CHANGED