Camera SDK 1.5 and camera health interface

Post Reply
Matthias
Posts: 8
Joined: Tue Mar 25, 2014 12:36 pm

Camera SDK 1.5 and camera health interface

Post by Matthias »

Hi,

I just upgraded our system from the SDK version 1.1.6 to 1.5 and noticed the camera health interface has changed. I could not find any samples or documentation so I just experimented with what's there.

I had no luck with attaching a cHealthMonitorListener, but I can use HealthMonitor::HealthItem().

However it never appears to reset. For example once I get a queue overflow it keeps reporting this issue even after it has been resolved. I call Update() and ClearIndicators() on the HealthMonitor but it still never resets. So I am stuck with perpetual "Not Alive" and "Not Receiving Frame Data" from the startup and "Frame Queue Overflow" once it occurs the first time.

Thank you for any suggestions!
Matthias
Matthias
Posts: 8
Joined: Tue Mar 25, 2014 12:36 pm

Re: Camera SDK 1.5 and camera health interface

Post by Matthias »

So I did some more research on this and I found that the HealthItem is only valid if Indicated() returns true. I was able to verify this by causing an Aggregation Overflow which also shows correctly using visualtest.exe.

The real issue here now appears to be that 1.5 never reports an indicated Frame Queue Overflow. This can easily be reproduced by using visualtest.exe. In 1.1.6 changing the window size shows a momentary Frame Queue Overflow, in 1.5 it does not.

I will be implementing a workaround by reporting a Frame Queue Overflow when I encounter skipped FrameIDs. It looks like the camera library may require a fix.

Matthias
beckdo
Posts: 520
Joined: Tue Jan 02, 2007 2:02 pm

Re: Camera SDK 1.5 and camera health interface

Post by beckdo »

Thanks for reporting this Matthias, I will investigate and follow-up.
beckdo
Posts: 520
Joined: Tue Jan 02, 2007 2:02 pm

Re: Camera SDK 1.5 and camera health interface

Post by beckdo »

Hey Matthias,

Good investigative work on this topic. First off, I have some sample code here for displaying the health information. This example is pasted into the SegmentMode sample application from the Camera SDK after the line: frame->Rasterize(framebuffer);

Code: Select all

//== health info draw location ==--

int x = 100;
int y = 100;

camera->Health()->Update();

for(int i=0; i<CameraLibrary::HealthMonitor::Health_Type_Count; i++)
{
    CameraLibrary::HealthMonitor::Types type = (CameraLibrary::HealthMonitor::Types) i;

    if(camera->Health()->QueryIndicator( type ) )
    {
        const char * text  = camera->Health()->IndicatorText( type );
        cHealthItem *item  = camera->Health()->HealthItem( type );

        framebuffer->PrintMedium(x, y, text);

        y+=12;
    }
}
That is a good way to query and display health information on a camera.

Now, in regards to the specific Frame Queue Overflow message. You were correct that this was not longer being reported at all. Your work around of detecting if FrameIDs are skipped is a good way to get that information. Additionally, I've checked in a fix for v1.6 of the Camera SDK that will return that indicator. However, because of the spurious nature of this health message, we've decided to only report it when it's persisting. More specifically, the Frame Queue Overflow will need to be triggered continuously for 5 seconds before it will return true for 'Indicated'. This helps with the general spurious nature of this message and will help simplify applications looking to trigger on performance problems vs. a single dropped frame.

Good job finding this one!
Matthias
Posts: 8
Joined: Tue Mar 25, 2014 12:36 pm

Re: Camera SDK 1.5 and camera health interface

Post by Matthias »

Ok, thanks for the update and info. I'll stick with my workaround then for the time being.
Post Reply