Exemplo n.º 1
0
int CIPICOMConnectionV6::send(std::string input, int& nof_cmd, int& tx_id, channel_type channel)
{
	if (!opened)
	{
        LOGER((CLogger::DEBUG_ERROR,"Send Error, No Session!"));
		return 0;
	}

	int retval = 0;
	if ((active_channel == shared_channel && channel == default_channel) || channel == shared_channel)
	{
		tx_id = 0;
		nof_cmd = 1;
		retval = send_internal(input);
	}
	else
	{
		retval = send_tid_internal(input, nof_cmd, tx_id, channel_to_socket(channel));
	}

    if (retval) {
        LOGER((CLogger::DEBUG_INFO,"Send on %s OK: '%s'",get_channel_name(channel).c_str(),input.c_str()));
	} else {
        LOGER((CLogger::DEBUG_ERROR,"Send on %s ERROR: '%s'",get_channel_name(channel).c_str(),input.c_str()));
    }
	return retval;
}
Exemplo n.º 2
0
int CIPICOMConnectionV6::receive(std::string& output, int tx_id, int nof_exp_resp, int expect_unsolicited, channel_type channel)
{
	if (!opened)
	{
		LOGER((CLogger::DEBUG_ERROR,"Recv Error, No Session!"));
		return 0;
	}

	int retval = 0;
	if ((active_channel == shared_channel && channel == default_channel) || channel == shared_channel)
	{
		retval = receive_internal(output, expect_unsolicited);
	}
	else
	{
		retval = receive_tid_internal(tx_id, nof_exp_resp, output, channel_to_socket(channel), expect_unsolicited);
	}

	if (retval) {
        LOGER((CLogger::DEBUG_INFO,"Recv on %s OK: '%s'",get_channel_name(channel).c_str(),output.c_str()));
	} else {
        LOGER((CLogger::DEBUG_ERROR,"Recv on %s ERROR: '%s'",get_channel_name(channel).c_str(),output.c_str()));
    }
	return retval;
}
Exemplo n.º 3
0
bool CIPICOMConnectionV6::send_tid_internal(std::string input, int& nof_commands_sent, int& tx_id, int sock)
{
	nof_commands_sent = 0;

	// Must strip at@ from command when sending over sapn socket
	std::string::size_type pos;
	if ((pos = input.find("at@")) != std::string::npos ||
		(pos = input.find("AT@")) != std::string::npos)
	{
		input.erase(pos, 3);
	}

	// Command format:
	// 1. at@ is removed
	// 2. <tid><space><command><0>

	std::stringstream ss;
	ss << tid << " " << input;
	std::string out = ss.str();
	out.append("\0", 1);
	tx_id = tid;

	if (ipicom->send(sock, out) < 0)
	{
        LOGER((CLogger::DEBUG_ERROR,"Send on %s ERROR: '%s'", get_channel_name(active_channel).c_str(), process_for_log(input).c_str()));
		return false;
	}
	else
        LOGER((CLogger::DEBUG_INFO,"Send on %s OK: '%s'", get_channel_name(active_channel).c_str(), process_for_log(input).c_str()));
	nof_commands_sent = std::count(input.begin(), input.end(), ';') + 1;
	tid += nof_commands_sent;

	return true;
}
Exemplo n.º 4
0
int CIPICOMConnectionV6::send(std::string input)
{
	if (!opened)
	{
        LOGER((CLogger::DEBUG_ERROR,"Send Error, No Session!"));
		return 0;
	}

	int retval = 0;
	if (active_channel == shared_channel)
	{
		retval = send_internal(input);
	}
	else
	{
		int nof_commands;
		int id;
		retval = send_tid_internal(input, nof_commands, id, channel_to_socket());
	}

    if (retval) {
        LOGER((CLogger::DEBUG_INFO,"Send on %s OK: '%s'",get_channel_name(active_channel).c_str(),input.c_str()));
	} else {
        LOGER((CLogger::DEBUG_ERROR,"Send on %s ERROR: '%s'",get_channel_name(active_channel).c_str(),input.c_str()));
    }

	return retval;
}
Exemplo n.º 5
0
bool CIPICOMConnectionV6::receive_internal(std::string& output, int expect_unsolicited)
{
	int recv_result;
	int dummy;

	recv_result = receive_wrapp(socket_shared, output, dummy);
	// Remove newlines in the string
	//std::string::size_type pos_line = output.find("\r\n");
	//while(pos_line != std::string::npos)
	//{
	//  output.replace(pos_line, 2, " ");
	//  pos_line = output.find("\r\n");
	//}
	if (recv_result == 0)  // Means OK
	{
		if (output.find("OK") != std::string::npos)
		{
            LOGER((CLogger::DEBUG_INFO,"Recv on %s OK: '%s'", get_channel_name(shared_channel).c_str(),process_for_log(output).c_str()));
			return true;
		} else {
            LOGER((CLogger::DEBUG_INFO,"Recv on %s ERROR: '%s'", get_channel_name(shared_channel).c_str(),process_for_log(output).c_str()));
		return false;
        }

	}
	else if (recv_result > 0) // means unsolicited data is received
	{
		if (expect_unsolicited)
		{
			return true;
		}

		output.clear();
		return receive_internal(output, expect_unsolicited);
	}
	else if (recv_result == -1) // Error from ipicom
	{
		return false;
	}
	else if (recv_result == -2) // Error from target
	{
		return false;
	}
	else if (recv_result == -3) // Received partial response
	{
		std::string incomplete_output;
		if (receive_internal(incomplete_output, expect_unsolicited))
		{
			output += incomplete_output;
			return true;
		}
		return false;
	}
	return false;
}
Exemplo n.º 6
0
bool CIPICOMConnectionV6::send_internal(std::string input)
{
	// on AT socket commands must be terminated with \r
	input.append("\r");
	int retval = ipicom->send(socket_shared, input) != 0;
	if (retval) {
        LOGER((CLogger::DEBUG_INFO,"Send on %s OK: '%s'",get_channel_name(active_channel).c_str(), process_for_log(input).c_str()));
	} else {
        LOGER((CLogger::DEBUG_ERROR,"Send on %s ERROR: '%s'",get_channel_name(active_channel).c_str(), process_for_log(input).c_str()));
    }
	return retval == 1;
}
Exemplo n.º 7
0
void av_get_channel_layout_string(char *buf, int buf_size,
                                  int nb_channels, int64_t channel_layout)
{
    int i;

    if (nb_channels <= 0)
        nb_channels = av_get_channel_layout_nb_channels(channel_layout);

    for (i = 0; channel_layout_map[i].name; i++)
        if (nb_channels    == channel_layout_map[i].nb_channels &&
            channel_layout == channel_layout_map[i].layout) {
            av_strlcpy(buf, channel_layout_map[i].name, buf_size);
            return;
        }

    snprintf(buf, buf_size, "%d channels", nb_channels);
    if (channel_layout) {
        int i,ch;
        av_strlcat(buf, " (", buf_size);
        for(i=0,ch=0; i<64; i++) {
            if ((channel_layout & (1L<<i))) {
                const char *name = get_channel_name(i);
                if (name) {
                    if (ch>0) av_strlcat(buf, "|", buf_size);
                    av_strlcat(buf, name, buf_size);
                }
                ch++;
            }
        }
        av_strlcat(buf, ")", buf_size);
    }
}
Exemplo n.º 8
0
void av_bprint_channel_layout(struct AVBPrint *bp,
                              int nb_channels, uint64_t channel_layout)
{
    int i;

    if (nb_channels <= 0)
        nb_channels = av_get_channel_layout_nb_channels(channel_layout);

    for (i = 0; i < FF_ARRAY_ELEMS(channel_layout_map); i++)
        if (nb_channels    == channel_layout_map[i].nb_channels &&
            channel_layout == channel_layout_map[i].layout) {
            av_bprintf(bp, "%s", channel_layout_map[i].name);
            return;
        }

    av_bprintf(bp, "%d channels", nb_channels);
    if (channel_layout) {
        int i, ch;
        av_bprintf(bp, " (");
        for (i = 0, ch = 0; i < 64; i++) {
            if ((channel_layout & (UINT64_C(1) << i))) {
                const char *name = get_channel_name(i);
                if (name) {
                    if (ch > 0)
                        av_bprintf(bp, "+");
                    av_bprintf(bp, "%s", name);
                }
                ch++;
            }
        }
        av_bprintf(bp, ")");
    }
}
Exemplo n.º 9
0
const char *av_get_channel_name(uint64_t channel)
{
    int i;
    if (av_get_channel_layout_nb_channels(channel) != 1)
        return NULL;
    for (i = 0; i < 64; i++)
        if ((1ULL<<i) & channel)
            return get_channel_name(i);
    return NULL;
}
Exemplo n.º 10
0
int CIPICOMConnectionV6::timeout(int delay)
{
	if (!delay) delay = 2500;

	int retval = ipicom->socket_set_opt(channel_to_socket(), IPICOM_SOCK_OPT_LVL_SESSION, IPICOM_SOCK_OPT_TIMEOUT, &delay, sizeof(delay));
	if (!retval)
	{
        LOGER((CLogger::DEBUG_INFO,"Set timeout for %s socket to %dms",get_channel_name(active_channel).c_str(),delay));
	}

	return !retval;
}
Exemplo n.º 11
0
static GstFlowReturn
gst_flite_test_src_create (GstBaseSrc * basesrc, guint64 offset,
    guint length, GstBuffer ** buffer)
{
  GstFliteTestSrc *src;
  int n_bytes;

  src = GST_FLITE_TEST_SRC (basesrc);

  n_bytes = src->info.channels * sizeof (gint16) * src->samples_per_buffer;

  while (gst_adapter_available (src->adapter) < n_bytes) {
    GstBuffer *buf;
    char *text;
    int i;
    GstMapInfo map;
    gint16 *data;
    cst_wave *wave;
    gsize size;

    text = get_channel_name (src, src->channel);

    wave = flite_text_to_wave (text, src->voice);
    g_free (text);
    cst_wave_resample (wave, src->info.rate);

    GST_DEBUG ("type %s, sample_rate %d, num_samples %d, num_channels %d",
        wave->type, wave->sample_rate, wave->num_samples, wave->num_channels);

    size = src->info.channels * sizeof (gint16) * wave->num_samples;
    buf = gst_buffer_new_and_alloc (size);

    gst_buffer_map (buf, &map, GST_MAP_WRITE);
    data = (gint16 *) map.data;
    memset (data, 0, size);
    for (i = 0; i < wave->num_samples; i++) {
      data[i * src->info.channels + src->channel] = wave->samples[i];
    }
    gst_buffer_unmap (buf, &map);

    src->channel++;
    if (src->channel == src->info.channels) {
      src->channel = 0;
    }

    gst_adapter_push (src->adapter, buf);
  }

  *buffer = gst_adapter_take_buffer (src->adapter, n_bytes);

  return GST_FLOW_OK;
}
Exemplo n.º 12
0
void bgav_qt_chan_dump(int indent, qt_chan_t * chan)
{
    const channel_label_t * channel_labels;
    int num_channels;
    int i, j;
    uint32_t mask;
    bgav_dprintf( "channel description (chan)\n");
    bgav_dprintf( "  version                     %d\n", chan->version);
    bgav_dprintf( "  flags                       %d\n", chan->flags);
    bgav_dprintf( "  mChannelLayoutTag:          0x%08x", chan->mChannelLayoutTag);

    if(chan->mChannelLayoutTag == CHANNEL_LAYOUT_UseChannelDescriptions)
    {
        bgav_dprintf( " [Use channel decriptions]\n");
    }
    else if(chan->mChannelLayoutTag == CHANNEL_LAYOUT_UseChannelBitmap)
    {
        bgav_dprintf( " [Use channel bitmap]\n");
    }
    else
    {
        channel_labels = get_channel_locations(chan->mChannelLayoutTag, &num_channels);

        bgav_dprintf( " [");

        if(channel_labels)
        {
            for(i = 0; i < num_channels; i++)
            {
                bgav_dprintf( "%s", get_channel_name(channel_labels[i]));
                if(i < num_channels-1)
                    bgav_dprintf( ", ");
            }
        }
        else
            bgav_dprintf( "Not available");

        bgav_dprintf( "]\n");
    }

    bgav_dprintf( "  mChannelBitmap:             0x%08x", chan->mChannelBitmap);

    if(chan->mChannelLayoutTag == CHANNEL_LAYOUT_UseChannelBitmap)
    {
        bgav_dprintf( " [");
        j = 0;
        mask = 1;
        for(i = 0; i < 32; i++)
        {
            if(chan->mChannelBitmap & mask)
            {
                if(j)
                    bgav_dprintf( ", ");
                bgav_dprintf( "%s", get_channel_name(channel_bit_2_channel_label(mask)));
                j++;
            }
            mask <<= 1;
        }
        bgav_dprintf( "]\n");
    }
    else
        bgav_dprintf( "\n");


    bgav_dprintf( "        mNumberChannelDescriptions: %d\n", chan->mNumberChannelDescriptions);
    for(i = 0; i < chan->mNumberChannelDescriptions; i++)
    {
        bgav_dprintf( "         mChannelLabel[%d]: 0x%08x [%s]\n", i,
                      chan->ChannelDescriptions[i].mChannelLabel, get_channel_name(chan->ChannelDescriptions[i].mChannelLabel));
        bgav_dprintf( "         mChannelFlags[%d]: 0x%08x\n", i,
                      chan->ChannelDescriptions[i].mChannelFlags);
        bgav_dprintf( "         mCoordinates[%d]: [%f %f %f]\n", i,
                      chan->ChannelDescriptions[i].mCoordinates[0],
                      chan->ChannelDescriptions[i].mCoordinates[1],
                      chan->ChannelDescriptions[i].mCoordinates[2]);
    }

}
Exemplo n.º 13
0
void javautil_vprintf(int severity, int channelID, int isolateID, char *msg, va_list vl) {

    char *str = 0;
    char tempBuffer[CONVERSION_BUFFER_SIZE];
    union Printable_t {
        int     i;
        int     x;
        char    c;
        char   *s;
    } Printable;
    char* separator = " - ";
    javacall_time_milliseconds ms;
    ms = javacall_time_get_clock_milliseconds();

    /*
       msg is the last argument specified; all
       others must be accessed using the variable-
       argument macros.
    */

    str = convertInt2String(ms,tempBuffer);
    javacall_print(str);
    javacall_print(separator);
    str = get_channel_name(channelID);
    javacall_print(str);
    javacall_print(separator);
    str = get_severity_name(severity);
    javacall_print(str);
    javacall_print(separator);
    str = convertInt2String(isolateID,tempBuffer);
    javacall_print(str);
    javacall_print(separator);

    if(msg == NULL) {
       javacall_print("NULL\n");
       return;
    }



    while(*msg) {

        if((*msg == '%') && (*(msg+1) == '%')) {
            msg++;
            javautil_putchar(*msg);
            msg++;
        } else if(*msg != '%') {
            javautil_putchar(*msg);
            msg++;
        } else {

            msg++;

            switch(*msg) {    /* Type to expect.*/
            /*Need to revisit: %ld and %lld ?*/
                case 'u':
                case 'i':
                case 'd': /* integer */
                    Printable.i = va_arg( vl, int );
                    str = convertInt2String(Printable.i,tempBuffer);
                    javacall_print(str);
                    break;

                case 'x': /* hexadecimal */
                    Printable.x = va_arg( vl, int );
                    str = convertHexa2String(Printable.x,tempBuffer);
                    javacall_print(str);
                    break;

                case 'c': /* character */
                    Printable.c = (char)va_arg( vl, int );
                    javautil_putchar(Printable.c);
                    break;

                case 's': /* string */
                    Printable.s = va_arg( vl, char * );
                    javacall_print(Printable.s);
                    break;

                default:
                    javacall_print("\nUnsupported type. Cant print %");
                    javautil_putchar(*msg);
                    javacall_print(".\n");
                    break;
            }/*end of switch*/
            msg++;
        }/*end of else*/

    }/*end of while*/

    javacall_print("\n");

}/* end of javautil_printf */