summaryrefslogtreecommitdiff
path: root/2.3-1/macros/Hardware/RasberryPi/Setup/RPI_pinMode.sci
blob: b6f52e6137ee73f97c1ceb71f9a5e5029e7494d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Copyright (C) 2017 - IIT Bombay - FOSSEE
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
// Organization: FOSSEE, IIT Bombay
// Email: toolbox@scilab.in


function RPI_pinMode(pin,Mode)
// Function to set the mode of the given pin.
//
// Calling Sequence
//  RPI_pinMode(pin,Mode)
//
// Parameters
//  pin : The pin number to act on. Numbering sequence to be followed as initiated using RPI_pinNumbering function.
//  Mode: The mode in which to set the pin.
//
// Description
//  This function configures the Raspberry Pi's given pin to work as the given mode (input/output/pwm/clock). Not all functions are available to all the pins.
//
//  Mode can take the following values-
//  <itemizedlist>
//  <listitem><para>'in'    -> sets the pin as input</para></listitem>
//  <listitem><para>'out'   -> sets the pin as output</para></listitem>
//  <listitem><para>'pwm'   -> sets the pin to PWM output. Only wiringPi pin 1 (BCM_GPIO pin 18) supports this function.</para></listitem>
//  <listitem><para>'clock' -> sets the pin to CLOCK output. Only wiringPi pin 7 (BCM_GPIO pin 4) supports this function.</para></listitem>
//  </itemizedlist>
//
// Examples
//  RPI_pinMode(0,'out')
// See also
//  RPI_pinNumbering
//
// Authors
//  Jorawar Singh
//
// Bibliography
//  http://wiringpi.com/reference/

    if Mode=='in' then
        commande="pnM#2#"+string(pin)+"#0#";
    elseif  Mode=='out' then
        commande="pnM#2#"+string(pin)+"#1#";
    elseif  Mode=='pwm' then
        commande="pnM#2#"+string(pin)+"#2#";
    elseif  Mode=='clock' then
        commande="pnM#2#"+string(pin)+"#3#";
    else
        error("Mode should be one of ""in/out/pwm/clock/soft_pwm/soft_tone/pwm_tone"".");
    end
    if getos=="Linux" then
        unix_w("python -c ""import socket;s=socket.socket();s.connect((''"+RPI_piAdress+"'',9077));s.send(''"+commande+"'');print(s.recv(1024));s.close()""");
    elseif getos=="Windows" then
        RPI_winR=dos("python -c ""import socket;s=socket.socket();s.connect((''"+RPI_piAdress+"'',9077));s.send(''"+commande+"'');print(s.recv(1024));s.close()""");
    end
endfunction