/*
 * camutils.h - GStreamer CAM (EN50221) support
 * Copyright (C) 2007 Alessandro Decina
 * 
 * Authors:
 *   Alessandro Decina <alessandro@nnva.org>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */

#ifndef CAM_UTILS_H
#define CAM_UTILS_H

#include <glib.h>
#include <gst/gst.h>
#include <gst/mpegts/mpegts.h>

#define TPDU_HEADER_SIZE_INDICATOR 0x80

#define CAM_FAILED(ret) (ret <= CAM_RETURN_ERROR)

typedef enum
{
  /* generic */
  CAM_RETURN_OK = 0,
  CAM_RETURN_ERROR = -1,

  /* transport specific */
  CAM_RETURN_TRANSPORT_ERROR = -10,
  CAM_RETURN_TRANSPORT_TOO_MANY_CONNECTIONS = -11,
  CAM_RETURN_TRANSPORT_TIMEOUT = -12,
  CAM_RETURN_TRANSPORT_POLL = -13,

  /* session specific */
  CAM_RETURN_SESSION_ERROR = -30,
  CAM_RETURN_SESSION_TOO_MANY_SESSIONS = -31,

  /* application specific */
  CAM_RETURN_APPLICATION_ERROR = -40,
} CamReturn;

guint8 cam_calc_length_field_size (guint length);
guint8 cam_write_length_field (guint8 *buff, guint length);
guint8 cam_read_length_field (guint8 *buff, guint *length);
guint8 *cam_build_ca_pmt (GstMpegtsPMT *pmt, guint8 list_management, guint8 cmd_id, guint *size);

#endif /* CAM_UTILS_H */
