hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com) Take a look at http://sourceforge.net/projects/hamlib/ Here you will find a mail list, and the latest CVS releases. General Guidelines. ------------------- 0. The top level directory looks like thus. [frank@kirk hamlib]$ tree -d . |-- CVS |-- common | `-- CVS |-- ft1000 | `-- CVS |-- ft1000d | `-- CVS |-- ft747 | |-- CVS | |-- include | | `-- CVS | |-- lib | | `-- CVS | `-- test | `-- CVS |-- ft840 | `-- CVS |-- ft847 | |-- CVS | |-- include | | `-- CVS | |-- lib | | `-- CVS | `-- test | `-- CVS |-- ft920 | `-- CVS |-- ts570d | `-- CVS |-- ts870s | `-- CVS `-- ts950 `-- CVS 1.Every new shared lib should be created autonomously within its own directory. eg ft747/ for libft747.so 2. Every lib should have the following structure [frank@kirk ft747]$ tree . |-- CVS | |-- Entries | |-- Entries.Log | |-- Repository | `-- Root |-- Makefile |-- README.ft747 |-- TODO.ft747 |-- ft747.c |-- ft747.h |-- include | `-- CVS | |-- Entries | |-- Repository | `-- Root |-- lib | `-- CVS | |-- Entries | |-- Repository | `-- Root `-- test |-- CVS | |-- Entries | |-- Repository | `-- Root |-- Makefile |-- testlibft747.c `-- testlibft747.h 3. Use the ft847 tree for examples of coding style. If there are any glaring problems,let me know.. 4. The "test" directory should contain source code of the form testlibXXXX.[ch] 5. The "test" directory should build a test suite that excercises the API you are implementing. 6. libXXXX.so should be built to allow TX (PTT) to be disabled if required. See ft847.[ch] for how this is done. 7. The Makefile for the test suite should have a target like this to allow testing the API. # run test program in local directory .PHONY: runtest runtest: (LD_LIBRARY_PATH="../lib" ./testlibft747 ) 8. You may wish to make an example out from your test suite program available as follows. make runtest > RESULT.example 9. Your header file (eg ft747.h, ft847.h etc) documents your API, so please describe it so others can understand. If this cannot be done, I may consider an "API.xxx" that decsribes the API (eg: API.ft847 ) 10. C code examples. An example piece of code may uses the ft847 API could look like this.. A C code snippet to connect to a FT847 and set the frequnecy of the main VFO to 439,700,000 Hz , using FM as the required mode, would look something like this. int fd; fd = rig_open(SERIAL_PORT); printf("port %s opened ok \n",SERIAL_PORT); cmd_set_cat_on(fd); /* cat on */ cmd_set_freq_main_vfo_hz(fd,439700000,MODE_FM); cmd_set_cat_off(fd); /* cat off */ rig_close(fd); printf("port %s closed ok \n",SERIAL_PORT); 11. Where are the GUI's. "Build it and they will come ..." Seriously, I am hoping the API's will provide a solid framework for some cool GUI development. I would like to see some GTK apps that use the hamlib API's so they can be used by end users as a nice part of the Ham shack.