If you can give me a point in the direction of the classes/interfaces I need to implement in order to create a new data source I will have a look and see how far I can get.
The classes you want to look at are these:
com.serotonin.mango.vo.dataSource.DataSourceVO - This is a value object type class that encapsulates all of the configuration information for a data source instance. It is also what gets stored in the database.
com.serotonin.mango.vo.dataSource.PointLocatorVO - This is the point-level version of the data source VO above. It is an interface; see also its implementer AbstractPointLocatorVO in the same package.
com.serotonin.mango.rt.dataSource.DataSourceRT - This is the run-time version of the data source. It encapsulates the actual protocol that is being implemented, and uses a VO to access its configuration. Also note the convenience subclass PollingDataSource in the same package.
com.serotonin.mango.rt.dataSource.PointLocatorRT - This is the point-level equivalent of the data source RT.
There are implementations of each of these for Modbus, SNMP, Spinwave, and the virtual data source, which you should review to give you context. Doing so should answer most of your questions. The rest of your questions you can post here.