I am the project admin of upod and since we seem to have the same general goal, I think it would be useful if we pooled our resources or even merged the projects.
So far I have been successful implementing and testing the following:
- Modify equilizer settings
Right now, I do all my delevopment and testing under macos 10 because I do not have the time to try to implement hfs+.
That sucks that we didn't know we were both working on the same thing :(
Would you like to merge into our project? If you could take over the iTunesDB stuff that would be awsome, some work has already been done, but it still needs a fair amount of work done.
Scott started this group so we'll have to okay it with him. He is currently working on an HFS+ implementation.
I will be trying to get the GUI done before he finishes.
And we have a few other people who are part of this group.
You are definantly welcome to join the project. Couple of questions about your code:
Where did you get the code to decipher the iTunesDB file? I got mine from Joe Freshman the developer of ephpod.
How did you test the code out? Were you able to copy files to your iPod? How did you do it?
How difficult would it be to merge your code with ours, how would we get them to interface together?
The code I used to decipher the iTunesDB is almost entirely my own. I did get some help deciphering the field meanings from the iPod on Linux webpage (http://giantlaser.com/~jason/ipod.html).
I Tested my code by the following:
- First, I removed the iTunesDB from the device.
- Next, I allowed iTunes to init a new empty database (i will add creation code latter).
- Finally, through a bash script and my db_add program (used to test db_add) I rebuilt the iTunesDB on the iPod and compared the number of songs on the iPod to what had been there previously.
There is no actual copying being done, but as I am using macos 10 I just have to drag and drop onto the filesystem or use cp.
As far as merging the code goes, I will have to take a look at what you have done and see if there is any easy way to manage it.
Oh so you are using a mac...OK...that explains how you were able to access your data.... Right now my iTunesDB code is sitting in CVS. The interface needs to be reworked on opening and closing the database (it will be read directly off the iPod, so it will need to interface with my HFS+ code), but that will be later.
Take a look at our code and let me know what you think. Grant's GUI stuff should be portable to a mac (if that is your platform of choice), but I would like to see development stick to Linux for now until we are ready to port it.
Well, it's not like BSD and linux are very different. In fact, my code compiles under both macos10 and linux-2.4.19. My code was designed to work with either a read/write mount of the ipod, or (when i get around to it) a file through hfs+utils.
* you can ignore ipod.c as it hasnt been thought out yet. I suggest you look at include/upodi.h and libupod/db.c to get a good idea of how my code works. *
Personally, I feel it would be beneficial for us to work together on this as to achieve a solution for linux/bsd users in a timely fashion. I am not sure, though, if a code merger would be possible as I have a much different view of how the iTunesDB should be broken up (I have my cvs code online if you want to take a look). Though, as I said, I really think that a merger of the codes would be a good thing, just, like any programmer, it is hard for me to dump code that I have worked hard writing :/.
Actually I believe it will definantly work with BSD. The HFS+ code I am developing works on top of standard kernel functions such as open, read, write and lseek. If BSD sees the iPod partitions as simply a file (such as /dev/sda3) and it has the basic file functions then it will work.
However it is beneficial to test on one platform first...I would definantly recommend testing the HFS+ portion solely on Linux right now, since it has been coded on Linux, and would confuse the hell out of me trying to code something I couldn't test.
As for the iPod code, it is OS independant (at least mine is). The interface to it isn't complete (because the HFS+ portion isn't), but it should only use the HFS+ code, and standard C practices that don't depend on OS.
I could never ask you to "dump" your code... Simply take your ideas, and meld them with mine... I agree that a merger would be a good thing, and so that neither of us have to dump our codes, start a new iTunesDB tree in my CVS. (why mine? I have no idea...but my tree has the HFS+ and GUI stuff in it so it sorta makes sense :) ). Then formalize an interface with HFS+ ( I will have that finished today or tomarrow). Once we do that I'll add you as a developer to this group (and us to yours), and work from the ground up...
Is that a decent plan?
Cool, sounds like a good plan. Just take a look at the code I have written and we can start working on a new iTunesDB code.
I am kinda caught up in the interface code for HFS+ right now... I won't be able to look at your stuff until after I finish that...