Topics: Developer Forum
Sep 12, 2007 at 1:20 PM
If you have questions about building the sources or have any other development related issues , please post them here!
Sep 12, 2008 at 10:08 PM
Hey skyntchev,

I had no time to prove the changed AtomParser bevor, but the release does not work.
It contains a Feedcore.dll which seems not to include the changes.
I have built the current sources and replaced the Feedcore.dll. And now it works.

Could it be, that your Visual Studio did not rebuild the Feedcore.dll??


Oct 23, 2008 at 4:38 PM
Hey Stefan,

I implemented basic enclosure support for ATOM feeds. But I encountered problems while downloading.
I used this feed for testing.

When downloading the first... no problem. But when I download the second one, the first one was deleted.
I'm not sure whether this is a problem on my device. I thought about the media url.
It is

Could it be a problem with the downloadmanager, that it replaces the media due to the

%20 character in the url?

The second question is where the todo-list is. I thought about implementing the feature request "only download when a connection is established". I had a look. It shouldn't be that difficult to find out wheather it is connected or not.

While implementing some of the Atom-features i found some things with the FeedParser which could be reorganised to fit better for both kind of feeds. I could make some suggestions.

Oct 23, 2008 at 5:08 PM
Edited Oct 23, 2008 at 5:08 PM
Can you check and see what is the number of feeds are set in "Keep at Most" (In the feed properties),  If it is set to 1 then you will have the exact behavior you describe. I don't think it has anything to do with the %20 in the feed url (but it is theoretically possible if for some reason it is truncated to the HOWTO and the new file overwrites the old one)
If you check the "Force unique names" in the feed properties BP will try to generate the name rather using the podcast name from the url. See if that resolves it. (You can look at the Output window of Visual Studio when you are running BP in the debugger - it will give you lots of trace info on what is it downloading)

I keep the ToDo list locally for now as it is a bit painful to manage the one at CodePlex.  I keep it in a free text form as it makes it easier to capture requests as people send them. I can send it to you. (I will try to find a better way to share it).

Keep in mind that  "only download when a connection is established" can be a "tricky" thing to do. It is very easy to find what connections you have, but the issue is that sometimes (especially for GPRS/EDGE connections) the connection is actually established only after you try to connect. Also sometimes it takes a while for the connection to get established so if you turn WiFi ON it takes may be 10 to 30 seconds to actually get IP address, so if you have a scheduled task that Turns WiFi on then start an update, BP has to wait for a while to see if the connection actually is established before trying to download. All of those things are doable, but require some experimentation to get right. This is the main reason I have postponed that implementation for a while. If you think you want to work on that we have to probably come up with a good set of  use cases/requirements that would be simple for the users to understand and follow.

Any suggestions you have to simplify and reuse code are always welcome.


Oct 23, 2008 at 11:03 PM
I will try it the next days in debugging mode. (the changes I made before were easy to manage just with copying the new compiled dll to the device and starting again. ;-))

What about putting the todo-list in the code-repository?

You suggestion about the GPRS/EDGE connections which only sets up when you try to connect is exactly what I meant.
Only when a connection is established before bp tries to update/download. This would propably solve the problem of  TechDaddy as well.
It would be an option for someone who doesn't want to use the GPRS/EDGE connection.
For example. I often hear podcasts in train and doesn't want to start a connection. Therefore I unchecked "Update All Feeds on Startup"
and "Update on Open Feed" and I have to do it manually.
With this kind of option I could let them checked and BP only tries to update all feeds on startup when I set up a connection before. (to Active Sync or WiFi)
When I come home, enabling wifi I would start BP and would had the latest news.

Oct 28, 2008 at 3:16 PM

I like your idea of storing the ToDo list as part of the code. It is there now and it is added to the solution too- you can find it in the Documentation folder at the root of the solution.
This will be the official ToDo list that I will keep up to date from now on.

FYI. I had some issues recently with people trying check in code to the project. If you have any files that you want to submit, just send them to me and I will review and check the changes in.

Oct 28, 2008 at 11:27 PM
Hey Stefan,

that's good with the ToDo List.

I can understand you with the code. I will send you the changes.
But we could get some problems when I want to do a lot of small changes on the same file. (as I have done with the Atom-Files).
What about reviewing the code when already checked in. I could send you the names (and folders) of the changed files. So you could check it and if it is wrong
you can change it very easy back to the old file.

I thought about the connections setting.
At first we could implement

1. "update on all connections"
2. "update only on established connections"

Oct 29, 2008 at 1:01 PM

I was thinking about the "update on connection" features and this is what I came up with:
One potential issue is that BeyondPod can run in unattended mode - start by itself in a the middle of the night and stop.
It can also wake up potentially several times during the 24 hour period. This brings 2 problems:

1. As I mentioned before, it is easy to detect what type of connections you have when an update starts, but how would you notify
the user that they don't have the correct connection. If you pop-up a message, that will be fine if the user is there to click on it, but it the user is not there this will block the application and
prevent it from functioning until you dismiss the message. One possibility is to "Disable" the update buttons (and there are multiple places - some on the menu some in the HTML)
another possibility is to come up with a self dismissing dialog or use the title bar to show a notification message. We have to come up with a good way to tell users that
they don't have a correct connection.

2. The second problem is that if you select "update on established Wi-Fi connection" then you will probably prevent all scheduled updates over that connection.
My guess is that when the device wakes up on schedule, BeyondPod will start and not find a connection as it takes some time for the WiFi connection to actually connect and get IP address
from the network. In order to get this to work reliably with any connection, we have to add an some code to check if the correct connection is already established or
wait for XX seconds for the connection to become established before doing any network operations. I just don't see a way to make "on established connection" and
scheduled updates work together. It is probably something like "Update only if you CAN establish <Active Sync/Wi-Fi/GPRS> connection within <some seconds>"