mirror of
				https://github.com/co-dan/ocaml-wiringpi/
				synced 2025-11-03 22:23:51 +01:00 
			
		
		
		
	Adjust to OCaml naming conventions
Use own C prefix, not the one of the OCaml compiler
This commit is contained in:
		@@ -1,56 +1,53 @@
 | 
				
			|||||||
(** This module is useful to communicate with the GPIO ports of a Raspberry Pi.
 | 
					(** This module is useful to communicate with the GPIO ports of a Raspberry Pi.
 | 
				
			||||||
    It uses the WiringPi library: http://wiringpi.com/ **)
 | 
					    It uses the WiringPi library: http://wiringpi.com/ **)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* Test function *)
 | 
					 | 
				
			||||||
external test_hello_world : unit -> unit = "caml_hello"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(* Use it at the very beginning to choose the numeroting mode *)
 | 
					(* Use it at the very beginning to choose the numeroting mode *)
 | 
				
			||||||
external setup : unit -> int = "caml_wiringPiSetup"
 | 
					external setup: unit -> int = "ocamlwiring_setup"
 | 
				
			||||||
external setupGio : unit -> int = "caml_wiringPiSetupGpio"
 | 
					external setup_gpio: unit -> int = "ocamlwiring_setup_gpio"
 | 
				
			||||||
external setupPhys : unit -> int = "caml_wiringPiSetupPhys"
 | 
					external setup_phys: unit -> int = "ocamlwiring_setup_phys"
 | 
				
			||||||
external setupSys : unit -> int = "caml_wiringPiSetupSys"
 | 
					external setup_sys: unit -> int = "ocamlwiring_setup_sys"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* ##########  Write on the device ########## *)
 | 
					(* ##########  Write on the device ########## *)
 | 
				
			||||||
(* This sets the mode of a pin to either INPUT (= 0), OUTPUT (= 1),
 | 
					(* This sets the mode of a pin to either INPUT (= 0), OUTPUT (= 1),
 | 
				
			||||||
 * PWM_OUTPUT (= 2) or GPIO_CLOCK (= 3).
 | 
					 * PWM_OUTPUT (= 2) or GPIO_CLOCK (= 3).
 | 
				
			||||||
 * Note that only wiringPi pin 1 (BCM_GPIO 18) supports PWM output and only
 | 
					 * Note that only wiringPi pin 1 (BCM_GPIO 18) supports PWM output and only
 | 
				
			||||||
 * wiringPi pin 7 (BCM_GPIO 4) supports CLOCK output modes. *)
 | 
					 * wiringPi pin 7 (BCM_GPIO 4) supports CLOCK output modes. *)
 | 
				
			||||||
external pinMode : int -> int -> unit = "caml_pinMode"
 | 
					external pin_mode: int -> int -> unit = "ocamlwiring_pin_mode"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* This sets the pull-up or pull-down resistor mode on the given pin, which
 | 
					(* This sets the pull-up or pull-down resistor mode on the given pin, which
 | 
				
			||||||
 * should be set as an input. *)
 | 
					 * should be set as an input. *)
 | 
				
			||||||
external pullUpDnControl : int -> int -> unit = "caml_pullUpDnControl"
 | 
					external pull_up_dn_control: int -> int -> unit = "ocamlwiring_pull_up_dn_control"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* Writes the value HIGH or LOW (1 or 0) to the given pin which must have
 | 
					(* Writes the value HIGH or LOW (1 or 0) to the given pin which must have
 | 
				
			||||||
 * been previously set as an output. *)
 | 
					 * been previously set as an output. *)
 | 
				
			||||||
external digitalWrite : int -> int -> unit = "caml_digitalWrite"
 | 
					external digital_write: int -> int -> unit = "ocamlwiring_digital_write"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* Writes the value to the PWM register for the given pin.
 | 
					(* Writes the value to the PWM register for the given pin.
 | 
				
			||||||
 * The Raspberry Pi has one on-board PWM pin, pin 1 (BMC_GPIO 18, Phys 12) and
 | 
					 * The Raspberry Pi has one on-board PWM pin, pin 1 (BMC_GPIO 18, Phys 12) and
 | 
				
			||||||
 * the range is 0-1024. Other PWM devices may have other PWM ranges *)
 | 
					 * the range is 0-1024. Other PWM devices may have other PWM ranges *)
 | 
				
			||||||
external pwmWrite : int -> int -> unit = "caml_pwmWrite"
 | 
					external pwm_write: int -> int -> unit = "ocamlwiring_pwm_write"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* This function returns the value read at the given pin. It will be HIGH
 | 
					(* This function returns the value read at the given pin. It will be HIGH
 | 
				
			||||||
 * or LOW (1 or 0) depending on the logic level at the pin. *)
 | 
					 * or LOW (1 or 0) depending on the logic level at the pin. *)
 | 
				
			||||||
external digitalRead : int -> int = "caml_digitalRead"
 | 
					external digital_read: int -> int = "ocamlwiring_digital_read"
 | 
				
			||||||
external digitalWriteByte : int -> unit = "caml_digitalWriteByte"
 | 
					external digital_write_byte: int -> unit = "ocamlwiring_digital_write_byte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
external analogRead: int -> int = "caml_analogRead"
 | 
					external analog_read: int -> int = "ocamlwiring_analog_read"
 | 
				
			||||||
external analogWrite: int -> int -> unit = "caml_analogWrite"
 | 
					external analog_write: int -> int -> unit = "ocamlwiring_analog_write"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* ##########  Timing ########## *)
 | 
					(* ##########  Timing ########## *)
 | 
				
			||||||
(* Use it to wait a few ms or µs. If you want to wait for several
 | 
					(* Use it to wait a few ms or µs. If you want to wait for several
 | 
				
			||||||
   secondes, use Unix.sleep. *)
 | 
					   secondes, use Unix.sleep. *)
 | 
				
			||||||
(* wait n ms *)
 | 
					(* wait n ms *)
 | 
				
			||||||
external delay : int -> unit = "caml_delay"
 | 
					external delay: int -> unit = "ocamlwiring_delay"
 | 
				
			||||||
(* wait n µs *)
 | 
					(* wait n µs *)
 | 
				
			||||||
external delayMicroseconds : int -> unit = "caml_delayMicroseconds"
 | 
					external delay_microseconds: int -> unit = "ocamlwiring_delay_microseconds"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* This returns a number representing the number if ms/µs since your program
 | 
					(* This returns a number representing the number if ms/µs since your program
 | 
				
			||||||
 * called one of the wiringPiSetup functions. *)
 | 
					 * called one of the wiringPiSetup functions. *)
 | 
				
			||||||
external millis : unit -> int = "caml_millis"
 | 
					external millis : unit -> int = "ocamlwiring_millis"
 | 
				
			||||||
external micros : unit -> int = "caml_micros"
 | 
					external micros : unit -> int = "ocamlwiring_micros"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(* ################# Name of pins : ################# *)
 | 
					(* ################# Name of pins : ################# *)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,32 +9,25 @@
 | 
				
			|||||||
#include <wiringPi.h>
 | 
					#include <wiringPi.h>
 | 
				
			||||||
#include <wiringShift.h>
 | 
					#include <wiringShift.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_hello(value unit)
 | 
					value ocamlwiring_setup(value unit)
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  CAMLparam1(unit);
 | 
					 | 
				
			||||||
  printf("Hello world!\n");
 | 
					 | 
				
			||||||
  CAMLreturn(Val_unit);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
value caml_wiringPiSetup(value unit)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(unit);
 | 
					  CAMLparam1(unit);
 | 
				
			||||||
  CAMLreturn(Val_int(wiringPiSetup()));
 | 
					  CAMLreturn(Val_int(wiringPiSetup()));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_wiringPiSetupGpio(value unit)
 | 
					value ocamlwiring_setup_gpio(value unit)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(unit);
 | 
					  CAMLparam1(unit);
 | 
				
			||||||
  CAMLreturn(Val_int(wiringPiSetupGpio()));
 | 
					  CAMLreturn(Val_int(wiringPiSetupGpio()));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_wiringPiSetupPhys(value unit)
 | 
					value ocamlwiring_setup_phys(value unit)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(unit);
 | 
					  CAMLparam1(unit);
 | 
				
			||||||
  CAMLreturn(Val_int(wiringPiSetupPhys()));
 | 
					  CAMLreturn(Val_int(wiringPiSetupPhys()));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_wiringPiSetupSys(value unit)
 | 
					value ocamlwiring_setup_sys(value unit)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(unit);
 | 
					  CAMLparam1(unit);
 | 
				
			||||||
  CAMLreturn(Val_int(wiringPiSetupSys()));
 | 
					  CAMLreturn(Val_int(wiringPiSetupSys()));
 | 
				
			||||||
@@ -42,47 +35,47 @@ value caml_wiringPiSetupSys(value unit)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Core functions
 | 
					// Core functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_pinMode(value pin, value mode)
 | 
					value ocamlwiring_pin_mode(value pin, value mode)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam2(pin, mode);
 | 
					  CAMLparam2(pin, mode);
 | 
				
			||||||
  pinMode(Int_val(pin), Int_val(mode));
 | 
					  pinMode(Int_val(pin), Int_val(mode));
 | 
				
			||||||
  CAMLreturn(Val_unit);
 | 
					  CAMLreturn(Val_unit);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_pullUpDnControl(value pin, value pud)
 | 
					value ocamlwiring_pull_up_dn_control(value pin, value pud)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam2(pin, pud);
 | 
					  CAMLparam2(pin, pud);
 | 
				
			||||||
  pullUpDnControl(Int_val(pin), Int_val(pin));
 | 
					  pullUpDnControl(Int_val(pin), Int_val(pin));
 | 
				
			||||||
  CAMLreturn(Val_unit);
 | 
					  CAMLreturn(Val_unit);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_digitalWrite(value pin, value value_p)
 | 
					value ocamlwiring_digital_write(value pin, value value_p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam2(pin, value_p);
 | 
					  CAMLparam2(pin, value_p);
 | 
				
			||||||
  digitalWrite(Int_val(pin), Int_val(value_p));
 | 
					  digitalWrite(Int_val(pin), Int_val(value_p));
 | 
				
			||||||
  CAMLreturn(Val_unit);
 | 
					  CAMLreturn(Val_unit);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_pwmWrite(value pin, value value_p)
 | 
					value ocamlwiring_pwm_write(value pin, value value_p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam2(pin, value_p);
 | 
					  CAMLparam2(pin, value_p);
 | 
				
			||||||
  pwmWrite(Int_val(pin), Int_val(value_p));
 | 
					  pwmWrite(Int_val(pin), Int_val(value_p));
 | 
				
			||||||
  CAMLreturn(Val_unit);
 | 
					  CAMLreturn(Val_unit);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_digitalRead(value pin)
 | 
					value ocamlwiring_digital_read(value pin)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(pin);
 | 
					  CAMLparam1(pin);
 | 
				
			||||||
  CAMLreturn(Val_int(digitalRead(Int_val(pin))));
 | 
					  CAMLreturn(Val_int(digitalRead(Int_val(pin))));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_analogRead(value pin)
 | 
					value ocamlwiring_analog_read(value pin)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(pin);
 | 
					  CAMLparam1(pin);
 | 
				
			||||||
  CAMLreturn(Val_int(analogRead(Int_val(pin))));
 | 
					  CAMLreturn(Val_int(analogRead(Int_val(pin))));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_analogWrite(value pin, value value_p)
 | 
					value ocamlwiring_analog_write(value pin, value value_p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam2(pin, value_p);
 | 
					  CAMLparam2(pin, value_p);
 | 
				
			||||||
  analogWrite(Int_val(pin), Int_val(value_p));
 | 
					  analogWrite(Int_val(pin), Int_val(value_p));
 | 
				
			||||||
@@ -91,7 +84,7 @@ value caml_analogWrite(value pin, value value_p)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Raspberry Pi Specifics
 | 
					// Raspberry Pi Specifics
 | 
				
			||||||
 | 
					
 | 
				
			||||||
value caml_digitalWriteByte(value value_p)
 | 
					value ocamlwiring_digital_write_byte(value value_p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(value_p);
 | 
					  CAMLparam1(value_p);
 | 
				
			||||||
  digitalWriteByte(Int_val(value_p));
 | 
					  digitalWriteByte(Int_val(value_p));
 | 
				
			||||||
@@ -106,7 +99,7 @@ value caml_digitalWriteByte(value value_p)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* This returns a number representing the number if milliseconds since your
 | 
					/* This returns a number representing the number if milliseconds since your
 | 
				
			||||||
 * program called one of the wiringPiSetup functions. */
 | 
					 * program called one of the wiringPiSetup functions. */
 | 
				
			||||||
value caml_millis(value unit)
 | 
					value ocamlwiring_millis(value unit)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(unit);
 | 
					  CAMLparam1(unit);
 | 
				
			||||||
  CAMLreturn(Val_int(millis()));
 | 
					  CAMLreturn(Val_int(millis()));
 | 
				
			||||||
@@ -114,7 +107,7 @@ value caml_millis(value unit)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* This returns a number representing the number of microseconds since your
 | 
					/* This returns a number representing the number of microseconds since your
 | 
				
			||||||
 * program called one of the wiringPiSetup functions. */
 | 
					 * program called one of the wiringPiSetup functions. */
 | 
				
			||||||
value caml_micros(value unit)
 | 
					value ocamlwiring_micros(value unit)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(unit);
 | 
					  CAMLparam1(unit);
 | 
				
			||||||
  CAMLreturn(Val_int(micros()));
 | 
					  CAMLreturn(Val_int(micros()));
 | 
				
			||||||
@@ -122,10 +115,10 @@ value caml_micros(value unit)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* This causes program execution to pause for at least howLong milliseconds.
 | 
					/* This causes program execution to pause for at least howLong milliseconds.
 | 
				
			||||||
 * Due to the multi-tasking nature of Linux it could be longer. */
 | 
					 * Due to the multi-tasking nature of Linux it could be longer. */
 | 
				
			||||||
value caml_delay(value howLong)
 | 
					value ocamlwiring_delay(value how_long)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(howLong);
 | 
					  CAMLparam1(how_long);
 | 
				
			||||||
  delay(Int_val(howLong));
 | 
					  delay(Int_val(how_long));
 | 
				
			||||||
  CAMLreturn(Val_unit);
 | 
					  CAMLreturn(Val_unit);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -136,9 +129,9 @@ value caml_delay(value howLong)
 | 
				
			|||||||
 * nanosleep() function – You may need to consider the implications of very
 | 
					 * nanosleep() function – You may need to consider the implications of very
 | 
				
			||||||
 * short delays on the overall performance of the system, especially if using
 | 
					 * short delays on the overall performance of the system, especially if using
 | 
				
			||||||
 * threads. */
 | 
					 * threads. */
 | 
				
			||||||
value caml_delayMicroseconds(value howLong)
 | 
					value ocamlwiring_delay_microseconds(value how_long)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  CAMLparam1(howLong);
 | 
					  CAMLparam1(how_long);
 | 
				
			||||||
  delayMicroseconds(Int_val(howLong));
 | 
					  delayMicroseconds(Int_val(how_long));
 | 
				
			||||||
  CAMLreturn(Val_unit);
 | 
					  CAMLreturn(Val_unit);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user