Dibase

software development

designing creating testing extending maintaining fixing

With over 30 years experience providing software development, consultancy and related services on a wide variety of platforms and development environments.

About Dibase

Dibase is the trading vehicle of Ralph McArdell, an independent, freelance software professional with over 30 years industry experience creating, extending and maintaining software.

about-image

Latest Posts

An Associative Container for non-bash Shell Scripts

Wednesday, 2 Feb 2022 by Ralph McArdell Articles code, Bash, shell script

Introduction Have you ever found yourself stuck with having to write a *nix / *nux shell script that cannot assume that Bash and system core utilites having GNU extensions are available and so specify the shell processor simply to be /bin/sh and then found you could really use some sort of container to store multiple values? This happened to me a while ago and I thought I would attempt to create an associative container abstraction that could be used with only basic shell facilities.

Continue Reading

C++11 (and beyond) Exception Support

Wednesday, 27 Sep 2017 by Ralph McArdell Articles code, C++

Introduction C++11 added a raft of new features to the C++ standard library and errors and exceptions were not left out. In this article we will start with a quick overview of the new exception types and exception related features. While the nitty gritty details are not covered in great depth in most cases a simple usage example will be provided. The information was pulled together from various sources[1][2][3], and these, along with others, can be used to look up the in depth, detailed, specifics.

Continue Reading

Raspberry Pi Linux User Mode GPIO in C++ - Part 3

Wednesday, 30 Sep 2015 by Ralph McArdell Articles Raspberry Pi, Linux, code, C++, GPIO

The previous instalments[1][2] have described creating the rpi-peripherals[3] library to access general purpose input output (GPIO) on a Raspberry Pi running Raspbian Linux in C++ from user space. They covered creating the phymem_ptr class template that utilises RAII (resource acquisition is initialisation[4]) to manage mapped areas of physical memory, setting up the library project and the implementation of support for basic general purpose input and output of single bit Boolean values, clocks and pulse with modulation (PWM).

Continue Reading

Raspberry Pi Linux User Mode GPIO in C++ - Part 2

Wednesday, 29 Jul 2015 by Ralph McArdell Articles Raspberry Pi, Linux, code, C++, GPIO

Previously[1] I described the initial stage of developing a library called rpi-peripherals[2] to access general purpose input output (GPIO) on a Raspberry Pi running Raspbian Linux in C++ from user land – that is there are no kernel mode parts to the library. The library was built on memory mapping the physical memory locations of the Raspberry Pi’s BCM2835 processor’s peripherals’ control registers using the dev/mem device accessed via a RAII (resource acquisition is initialisation[3]) resource managing class template called phymem_ptr.

Continue Reading

Raspberry Pi Linux User Mode GPIO in C++ - Part 1

Thursday, 26 Mar 2015 by Ralph McArdell Articles Raspberry Pi, Linux, code, C++, GPIO, mmap

I started experimenting with Raspberry Pi GPIO using Python[1][2]. Then the original Gertboard[3] kit was released so I ordered and built one which enabled me to play with BCM2835 peripheral IO beyond basic GPIO. At the time the Gertboard had test and example C code available[4] that, as with the Python case, I felt could be expressed more cleanly. I thought it would be interesting to see what advantages C++, hopefully C++11, features and idioms might provide.

Continue Reading