BOOL wavfile_open(char *filename) { size_t fmt_chunk_size; size_t data_chunk_size; char buf[TMPBUF_SIZE]; fp = fopen(filename, "rb"); if (fp == NULL) return FALSE; // header CHECK_STR4("RIFF"); READ_UINT(file_size, "file_size"); CHECK_STR4("WAVE"); // fmt chunk CHECK_STR4("fmt "); READ_UINT(fmt_chunk_size, "fmt_chunk_size"); READ_USHORT(format_id, "format_id"); READ_USHORT(channel_no, "channel_no"); READ_UINT(sampling_rate, "sampling_rate"); READ_UINT(byte_per_sec, "byte_per_sec"); READ_USHORT(block_size, "block_size"); READ_USHORT(sample_per_bit, "sample_per_bit"); // data chunk CHECK_STR4("data"); READ_UINT(data_chunk_size, "data_chunk_size"); return TRUE; }
// Parse the Attribute list LIST *SstpParseAttributeList(UCHAR *data, UINT size, SSTP_PACKET *p) { LIST *o; USHORT us; UINT num; // Validate arguments if (size == 0 || data == NULL || p == NULL) { return NULL; } if (size < 4) { return NULL; } // Message Type us = READ_USHORT(data); p->MessageType = us; data += sizeof(USHORT); size -= sizeof(USHORT); // Num Attributes num = READ_USHORT(data); data += sizeof(USHORT); size -= sizeof(USHORT); // Attibutes List o = NewListFast(NULL); while (LIST_NUM(o) < num) { SSTP_ATTRIBUTE *a = SstpParseAttribute(data, size); if (a == NULL) { SstpFreeAttributeList(o); return NULL; } if (a->TotalLength > size) { SstpFreeAttribute(a); SstpFreeAttributeList(o); return NULL; } Add(o, a); data += a->TotalLength; size -= a->TotalLength; } return o; }
A661_INTERNAL void write_bitfield_u16(buffer_el msg[], const a661_ulong val, const int startbit, const int nb_bits) { unsigned long tmp = READ_USHORT ( msg ); unsigned long mask = (( 1 << nb_bits) - 1); tmp = tmp | ( (val & mask) << startbit ); WRITE_USHORT (msg, tmp); }
// Parse the Attribute SSTP_ATTRIBUTE *SstpParseAttribute(UCHAR *data, UINT size) { SSTP_ATTRIBUTE *a; // Validate arguments if (data == NULL || size == 0) { return NULL; } a = ZeroMalloc(sizeof(SSTP_ATTRIBUTE)); if (size < 4) { SstpFreeAttribute(a); return NULL; } data++; size--; // Attribute ID a->AttributeId = *((UCHAR *)data); data++; size--; // Length a->TotalLength = READ_USHORT(data) & 0xFFF; data += sizeof(USHORT); size -= sizeof(USHORT); if (a->TotalLength < 4) { // Length fraud SstpFreeAttribute(a); return NULL; } a->DataSize = a->TotalLength - 4; if (a->DataSize > size) { // Length excess SstpFreeAttribute(a); return NULL; } a->Data = Clone(data, a->DataSize); return a; }
static gboolean load_global_params(const gchar **attribute_names, const gchar **attribute_values) { while (*attribute_names) { const gchar *option = *attribute_names++; const gchar *value = *attribute_values++; /* General options */ if (READ_BOOL(*options, show_icon_names)) continue; if (READ_BOOL(*options, tree_descend_subdirs)) continue; if (READ_BOOL(*options, view_dir_list_single_click_enter)) continue; if (READ_BOOL(*options, lazy_image_sync)) continue; if (READ_BOOL(*options, update_on_time_change)) continue; if (READ_UINT_CLAMP(*options, duplicates_similarity_threshold, 0, 100)) continue; if (READ_UINT_CLAMP(*options, duplicates_match, 0, DUPE_MATCH_NAME_CI)) continue; if (READ_UINT_CLAMP(*options, duplicates_select_type, 0, DUPE_SELECT_GROUP2)) continue; if (READ_BOOL(*options, duplicates_thumbnails)) continue; if (READ_BOOL(*options, rot_invariant_sim)) continue; if (READ_BOOL(*options, progressive_key_scrolling)) continue; if (READ_UINT_CLAMP(*options, keyboard_scroll_step, 1, 32)) continue; if (READ_BOOL(*options, mousewheel_scrolls)) continue; if (READ_BOOL(*options, image_lm_click_nav)) continue; if (READ_INT(*options, open_recent_list_maxsize)) continue; if (READ_INT(*options, dnd_icon_size)) continue; if (READ_BOOL(*options, place_dialogs_under_mouse)) continue; if (READ_BOOL(*options, save_window_positions)) continue; if (READ_BOOL(*options, use_saved_window_positions_for_new_windows)) continue; if (READ_BOOL(*options, tools_restore_state)) continue; /* Properties dialog options */ if (READ_CHAR(*options, properties.tabs_order)) continue; /* Image options */ if (READ_UINT_CLAMP(*options, image.zoom_mode, 0, ZOOM_RESET_NONE)) continue; if (READ_BOOL(*options, image.zoom_2pass)) continue; if (READ_BOOL(*options, image.zoom_to_fit_allow_expand)) continue; if (READ_BOOL(*options, image.fit_window_to_image)) continue; if (READ_BOOL(*options, image.limit_window_size)) continue; if (READ_INT(*options, image.max_window_size)) continue; if (READ_BOOL(*options, image.limit_autofit_size)) continue; if (READ_INT(*options, image.max_autofit_size)) continue; if (READ_UINT_CLAMP(*options, image.scroll_reset_method, 0, PR_SCROLL_RESET_COUNT - 1)) continue; if (READ_INT(*options, image.tile_cache_max)) continue; if (READ_INT(*options, image.image_cache_max)) continue; if (READ_UINT_CLAMP(*options, image.zoom_quality, GDK_INTERP_NEAREST, GDK_INTERP_HYPER)) continue; if (READ_INT(*options, image.zoom_increment)) continue; if (READ_BOOL(*options, image.enable_read_ahead)) continue; if (READ_BOOL(*options, image.exif_rotate_enable)) continue; if (READ_BOOL(*options, image.use_custom_border_color)) continue; if (READ_BOOL(*options, image.use_custom_border_color_in_fullscreen)) continue; if (READ_COLOR(*options, image.border_color)) continue; if (READ_BOOL(*options, image.use_clutter_renderer)) continue; /* Thumbnails options */ if (READ_INT_CLAMP(*options, thumbnails.max_width, 16, 512)) continue; if (READ_INT_CLAMP(*options, thumbnails.max_height, 16, 512)) continue; if (READ_BOOL(*options, thumbnails.enable_caching)) continue; if (READ_BOOL(*options, thumbnails.cache_into_dirs)) continue; if (READ_BOOL(*options, thumbnails.use_xvpics)) continue; if (READ_BOOL(*options, thumbnails.spec_standard)) continue; if (READ_UINT_CLAMP(*options, thumbnails.quality, GDK_INTERP_NEAREST, GDK_INTERP_HYPER)) continue; if (READ_BOOL(*options, thumbnails.use_exif)) continue; /* File sorting options */ if (READ_UINT(*options, file_sort.method)) continue; if (READ_BOOL(*options, file_sort.ascending)) continue; if (READ_BOOL(*options, file_sort.case_sensitive)) continue; if (READ_BOOL(*options, file_sort.natural)) continue; /* File operations *options */ if (READ_BOOL(*options, file_ops.enable_in_place_rename)) continue; if (READ_BOOL(*options, file_ops.confirm_delete)) continue; if (READ_BOOL(*options, file_ops.enable_delete_key)) continue; if (READ_BOOL(*options, file_ops.safe_delete_enable)) continue; if (READ_CHAR(*options, file_ops.safe_delete_path)) continue; if (READ_INT(*options, file_ops.safe_delete_folder_maxsize)) continue; /* Fullscreen options */ if (READ_INT(*options, fullscreen.screen)) continue; if (READ_BOOL(*options, fullscreen.clean_flip)) continue; if (READ_BOOL(*options, fullscreen.disable_saver)) continue; if (READ_BOOL(*options, fullscreen.above)) continue; /* Image overlay */ if (READ_CHAR(*options, image_overlay.template_string)) continue; if (READ_INT(*options, image_overlay.x)) continue; if (READ_INT(*options, image_overlay.y)) continue; if (READ_USHORT(*options, image_overlay.text_red)) continue; if (READ_USHORT(*options, image_overlay.text_green)) continue; if (READ_USHORT(*options, image_overlay.text_blue)) continue; if (READ_USHORT(*options, image_overlay.text_alpha)) continue; if (READ_USHORT(*options, image_overlay.background_red)) continue; if (READ_USHORT(*options, image_overlay.background_green)) continue; if (READ_USHORT(*options, image_overlay.background_blue)) continue; if (READ_USHORT(*options, image_overlay.background_alpha)) continue; if (READ_CHAR(*options, image_overlay.font)) continue; /* Slideshow options */ if (READ_INT_UNIT(*options, slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION)) continue; if (READ_BOOL(*options, slideshow.random)) continue; if (READ_BOOL(*options, slideshow.repeat)) continue; /* Collection options */ if (READ_BOOL(*options, collections.rectangular_selection)) continue; /* Filtering options */ if (READ_BOOL(*options, file_filter.show_hidden_files)) continue; if (READ_BOOL(*options, file_filter.show_parent_directory)) continue; if (READ_BOOL(*options, file_filter.show_dot_directory)) continue; if (READ_BOOL(*options, file_filter.disable_file_extension_checks)) continue; if (READ_BOOL(*options, file_filter.disable)) continue; if (READ_CHAR(*options, sidecar.ext)) continue; /* Color Profiles */ /* Shell command */ if (READ_CHAR(*options, shell.path)) continue; if (READ_CHAR(*options, shell.options)) continue; /* Helpers */ if (READ_CHAR(*options, helpers.html_browser.command_name)) continue; if (READ_CHAR(*options, helpers.html_browser.command_line)) continue; /* Metadata */ if (READ_BOOL(*options, metadata.enable_metadata_dirs)) continue; if (READ_BOOL(*options, metadata.save_in_image_file)) continue; if (READ_BOOL(*options, metadata.save_legacy_IPTC)) continue; if (READ_BOOL(*options, metadata.warn_on_write_problems)) continue; if (READ_BOOL(*options, metadata.save_legacy_format)) continue; if (READ_BOOL(*options, metadata.sync_grouped_files)) continue; if (READ_BOOL(*options, metadata.confirm_write)) continue; if (READ_BOOL(*options, metadata.confirm_after_timeout)) continue; if (READ_INT(*options, metadata.confirm_timeout)) continue; if (READ_BOOL(*options, metadata.confirm_on_image_change)) continue; if (READ_BOOL(*options, metadata.confirm_on_dir_change)) continue; if (READ_BOOL(*options, metadata.keywords_case_sensitive)) continue; if (READ_BOOL(*options, metadata.write_orientation)) continue; if (READ_INT(*options, stereo.mode)) continue; if (READ_INT(*options, stereo.fsmode)) continue; if (READ_BOOL(*options, stereo.enable_fsmode)) continue; if (READ_INT(*options, stereo.fixed_w)) continue; if (READ_INT(*options, stereo.fixed_h)) continue; if (READ_INT(*options, stereo.fixed_x1)) continue; if (READ_INT(*options, stereo.fixed_y1)) continue; if (READ_INT(*options, stereo.fixed_x2)) continue; if (READ_INT(*options, stereo.fixed_y2)) continue; /* Dummy options */ if (READ_DUMMY(*options, image.dither_quality, "deprecated since 2012-08-13")) continue; /* Unknown options */ log_printf("unknown attribute %s = %s\n", option, value); } return TRUE; }
// Parse the SSTP packet SSTP_PACKET *SstpParsePacket(UCHAR *data, UINT size) { SSTP_PACKET *p; USHORT len; // Validate arguments if (data == NULL || size == 0) { return NULL; } if (size < 4) { return NULL; } p = ZeroMalloc(sizeof(SSTP_PACKET)); // Version p->Version = *((UCHAR *)data); data++; size--; if (p->Version != SSTP_VERSION_1) { // Invalid version SstpFreePacket(p); return NULL; } // Flag if ((*((UCHAR *)data)) & 0x01) { p->IsControl = true; } data++; size--; // Length len = READ_USHORT(data) & 0xFFF; data += sizeof(USHORT); size -= sizeof(USHORT); if (len < 4) { // Invalid size SstpFreePacket(p); return NULL; } if (((UINT)(len - 4)) > size) { // Oversized SstpFreePacket(p); return NULL; } // Data p->DataSize = len - 4; p->Data = Clone(data, p->DataSize); if (p->IsControl) { // Parse the Attribute list p->AttibuteList = SstpParseAttributeList(p->Data, p->DataSize, p); if (p->AttibuteList == NULL) { // Failure of parsing list SstpFreePacket(p); return NULL; } } return p; }
// Process the SSTP control packet reception void SstpProcessControlPacket(SSTP_SERVER *s, SSTP_PACKET *p) { // Validate arguments if (s == NULL || p == NULL || p->IsControl == false) { return; } Debug("SSTP Control Packet Recv: Msg = %u, Num = %u\n", p->MessageType, LIST_NUM(p->AttibuteList)); switch (p->MessageType) { case SSTP_MSG_CALL_CONNECT_REQUEST: // Receive a connection request from a client if (s->Aborting == false && s->Disconnecting == false) { if (s->Status == SSTP_SERVER_STATUS_REQUEST_PENGING) { SSTP_ATTRIBUTE *protocol_id = SstpFindAttribute(p, SSTP_ATTRIB_ENCAPSULATED_PROTOCOL_ID); if (protocol_id != NULL && protocol_id->DataSize == 2 && READ_USHORT(protocol_id->Data) == SSTP_ENCAPSULATED_PROTOCOL_PPP) { // Accept the connection request by the PPP protocol SSTP_PACKET *ret; // Generation of random numbers Rand(s->SentNonce, SSTP_NONCE_SIZE); ret = SstpNewControlPacketWithAnAttribute(SSTP_MSG_CALL_CONNECT_ACK, SstpNewCryptoBindingRequestAttribute(CERT_HASH_PROTOCOL_SHA256, s->SentNonce)); SstpSendPacket(s, ret); SstpFreePacket(ret); s->Status = SSTP_SERVER_STATUS_CONNECTED_PENDING; s->EstablishedCount++; } else { // Refuse to accept for a connection request other than the PPP protocol SSTP_PACKET *ret = SstpNewControlPacketWithAnAttribute(SSTP_MSG_CALL_CONNECT_NAK, SstpNewStatusInfoAttribute(SSTP_ATTRIB_ENCAPSULATED_PROTOCOL_ID, ATTRIB_STATUS_VALUE_NOT_SUPPORTED)); SstpSendPacket(s, ret); SstpFreePacket(ret); } } } break; case SSTP_MSG_CALL_CONNECTED: // Connection from the client complete if (s->Aborting == false && s->Disconnecting == false) { if (s->Status == SSTP_SERVER_STATUS_CONNECTED_PENDING) { s->Status = SSTP_SERVER_STATUS_ESTABLISHED; Debug("SSTP Connected.\n"); } } break; case SSTP_MSG_CALL_DISCONNECT: // Receive a disconnect request from the client case SSTP_MSG_CALL_DISCONNECT_ACK: s->DisconnectRecved = true; SstpDisconnect(s); break; case SSTP_MSG_CALL_ABORT: // Receive a disconnect request from the client s->AbortReceived = true; SstpAbort(s); break; } }
// Handle the communication of SSTP protocol bool ProcessSstpHttps(CEDAR *cedar, SOCK *s, SOCK_EVENT *se) { UINT tmp_size = 65536; UCHAR *tmp_buf; FIFO *recv_fifo; FIFO *send_fifo; SSTP_SERVER *sstp; bool ret = false; // Validate arguments if (cedar == NULL || s == NULL || se == NULL) { return false; } tmp_buf = Malloc(tmp_size); recv_fifo = NewFifo(); send_fifo = NewFifo(); sstp = NewSstpServer(cedar, &s->RemoteIP, s->RemotePort, &s->LocalIP, s->LocalPort, se, s->RemoteHostname, s->CipherName); while (true) { UINT r; bool is_disconnected = false; bool state_changed = false; // Receive data over SSL while (true) { r = Recv(s, tmp_buf, tmp_size, true); if (r == 0) { // SSL is disconnected is_disconnected = true; break; } else if (r == SOCK_LATER) { // Data is not received any more break; } else { // Queue the received data WriteFifo(recv_fifo, tmp_buf, r); state_changed = true; } } while (recv_fifo->size >= 4) { UCHAR *first4; UINT read_size = 0; bool ok = false; // Read 4 bytes from the beginning of the receive queue first4 = ((UCHAR *)recv_fifo->p) + recv_fifo->pos; if (first4[0] == SSTP_VERSION_1) { USHORT len = READ_USHORT(first4 + 2) & 0xFFF; if (len >= 4) { ok = true; if (recv_fifo->size >= len) { UCHAR *data; BLOCK *b; read_size = len; data = Malloc(read_size); ReadFifo(recv_fifo, data, read_size); b = NewBlock(data, read_size, 0); InsertQueue(sstp->RecvQueue, b); } } } if (read_size == 0) { break; } if (ok == false) { // Disconnect the connection since a bad packet received is_disconnected = true; break; } } // Process the timer interrupt SstpProcessInterrupt(sstp); if (sstp->Disconnected) { is_disconnected = true; } // Put the transmission data that SSTP module has generated into the transmission queue while (true) { BLOCK *b = GetNext(sstp->SendQueue); if (b == NULL) { break; } // When transmit a data packet, If there are packets of more than about // 2.5 MB in the transmission queue of the TCP, discard without transmission if (b->PriorityQoS || (send_fifo->size <= MAX_BUFFERING_PACKET_SIZE)) { WriteFifo(send_fifo, b->Buf, b->Size); } FreeBlock(b); } // Data is transmitted over SSL while (send_fifo->size != 0) { r = Send(s, ((UCHAR *)send_fifo->p) + send_fifo->pos, send_fifo->size, true); if (r == 0) { // SSL is disconnected is_disconnected = true; break; } else if (r == SOCK_LATER) { // Can not send any more break; } else { // Advance the transmission queue by the amount of the transmitted ReadFifo(send_fifo, NULL, r); state_changed = true; } } if (is_disconnected) { // Disconnected break; } // Wait for the next state change if (state_changed == false) { UINT select_time = SELECT_TIME; UINT r = GetNextIntervalForInterrupt(sstp->Interrupt); WaitSockEvent(se, MIN(r, select_time)); } } if (sstp != NULL && sstp->EstablishedCount >= 1) { ret = true; } FreeSstpServer(sstp); ReleaseFifo(recv_fifo); ReleaseFifo(send_fifo); Free(tmp_buf); YieldCpu(); Disconnect(s); return ret; }
A661_INTERNAL kcg_real read_fr16_to_real(const buffer_el buffer[], const int max) { const int tmp = READ_USHORT(buffer); return fr_to_real (tmp, 16, max); }
int OperationalScenario_UA_1_receive(buffer_el buffer[], int buffer_size, inC_OperationalScenario* scade_ctx, extern_in_ctx_t * extern_ctx){ int widget_event_structure_current_size = 0; int A661_Run_Time_Command_limit = 0; int root_current_size = 0; int n = 0; int next_n = 0; /* type root */ switch (buffer[ n ]){ case A661_BEGIN_BLOCK : root_current_size = READ_ULONG(( buffer + ( 4 + n ) )); next_n = ( n + root_current_size ); /* LayerIdent */ switch (buffer[ ( 1 + n ) ]){ case 1 : /* root */ n = ( 8 + n ); A661_Run_Time_Command_limit = ( ( n + root_current_size ) - 12 ); while(( n < A661_Run_Time_Command_limit )){ /* type A661_Run_Time_Command */ switch (READ_USHORT(( buffer + n ))){ case A661_NOTIFY_WIDGET_EVENT : widget_event_structure_current_size = READ_USHORT(( buffer + ( 2 + n ) )); next_n = ( n + widget_event_structure_current_size ); /* WidgetIdent */ switch (READ_USHORT(( buffer + ( 4 + n ) ))){ case 35 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SELECTION : /* PushButton_A661_EVT_SELECTION */ /* Notify */ scade_ctx->upDateSw = TRUE; break; default : break; } n = next_n; break; case 26 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SELECTION : /* PushButton_A661_EVT_SELECTION */ /* Notify */ scade_ctx->Power = TRUE; break; default : break; } n = next_n; break; case 1 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SELECTION : /* PushButton_A661_EVT_SELECTION */ /* Notify */ scade_ctx->PassarFaseBtn = TRUE; break; default : break; } n = next_n; break; default : break; } break; default : break; } n = next_n; } n = ( 4 + n ); break; default : break; } break; default : break; } return n ; }
// Process the received packet BLOCK *UdpAccelProcessRecvPacket(UDP_ACCEL *a, UCHAR *buf, UINT size, IP *src_ip, UINT src_port) { UCHAR key[UDP_ACCELERATION_PACKET_KEY_SIZE]; UCHAR *iv; CRYPT *c; UINT64 my_tick, your_tick; UINT inner_size; UCHAR *inner_data = NULL; UINT pad_size; UCHAR *verify; bool compress_flag; BLOCK *b = NULL; UINT cookie; // Validate arguments if (a == NULL || buf == NULL || size == 0 || src_ip == NULL) { return NULL; } if (a->PlainTextMode == false) { // IV if (size < UDP_ACCELERATION_PACKET_IV_SIZE) { return NULL; } iv = buf; buf += UDP_ACCELERATION_PACKET_IV_SIZE; size -= UDP_ACCELERATION_PACKET_IV_SIZE; // Calculate the key UdpAccelCalcKey(key, a->YourKey, iv); if (false) { char tmp1[256]; char tmp2[256]; char tmp3[256]; BinToStr(tmp1, sizeof(tmp1), a->YourKey, sizeof(a->YourKey)); BinToStr(tmp2, sizeof(tmp2), iv, UDP_ACCELERATION_PACKET_IV_SIZE); BinToStr(tmp3, sizeof(tmp3), key, sizeof(key)); Debug("Your Key: %s\n" "IV : %s\n" "Comm Key: %s\n", tmp1, tmp2, tmp3); } // Decryption c = NewCrypt(key, UDP_ACCELERATION_PACKET_KEY_SIZE); Encrypt(c, buf, buf, size); FreeCrypt(c); } // Cookie if (size < sizeof(UINT)) { return NULL; } cookie = READ_UINT(buf); buf += sizeof(UINT); size -= sizeof(UINT); if (cookie != a->MyCookie) { return NULL; } // My Tick if (size < sizeof(UINT64)) { return NULL; } my_tick = READ_UINT64(buf); buf += sizeof(UINT64); size -= sizeof(UINT64); // Your Tick if (size < sizeof(UINT64)) { return NULL; } your_tick = READ_UINT64(buf); buf += sizeof(UINT64); size -= sizeof(UINT64); // inner_size if (size < sizeof(USHORT)) { return NULL; } inner_size = READ_USHORT(buf); buf += sizeof(USHORT); size -= sizeof(USHORT); // compress_flag if (size < sizeof(UCHAR)) { return NULL; } compress_flag = *((UCHAR *)buf); buf += sizeof(UCHAR); size -= sizeof(UCHAR); if (size < inner_size) { return NULL; } // inner_data if (inner_size >= 1) { inner_data = buf; buf += inner_size; size -= inner_size; } if (a->PlainTextMode == false) { // padding if (size < UDP_ACCELERATION_PACKET_IV_SIZE) { return false; } pad_size = size - UDP_ACCELERATION_PACKET_IV_SIZE; buf += pad_size; size -= pad_size; // verify if (size != UDP_ACCELERATION_PACKET_IV_SIZE) { return NULL; } verify = buf; if (IsZero(verify, UDP_ACCELERATION_PACKET_IV_SIZE) == false) { return NULL; } } if (my_tick < a->LastRecvYourTick) { if ((a->LastRecvYourTick - my_tick) >= ((UINT64)UDP_ACCELERATION_WINDOW_SIZE_MSEC)) { return NULL; } } a->LastRecvMyTick = MAX(a->LastRecvMyTick, your_tick); a->LastRecvYourTick = MAX(a->LastRecvYourTick, my_tick); if (inner_size >= 1) { b = NewBlock(Clone(inner_data, inner_size), inner_size, compress_flag ? -1 : 0); } if (a->LastSetSrcIpAndPortTick < a->LastRecvYourTick) { a->LastSetSrcIpAndPortTick = a->LastRecvYourTick; Copy(&a->YourIp, src_ip, sizeof(IP)); a->YourPort = src_port; } if (a->LastRecvMyTick != 0) { if ((a->LastRecvMyTick + (UINT64)(UDP_ACCELERATION_WINDOW_SIZE_MSEC)) >= a->Now) { a->LastRecvTick = a->Now; a->IsReachedOnce = true; if (a->FirstStableReceiveTick == 0) { a->FirstStableReceiveTick = a->Now; } } } return b; }
int ua_receive(buffer_el buffer[], int buffer_size, inC_ts05* scade_ctx, extern_in_ctx_t * extern_ctx){ int widget_event_structure_current_size = 0; int A661_Run_Time_Command_limit = 0; int root_current_size = 0; int n = 0; int next_n = 0; /* type root */ switch (buffer[ n ]){ case A661_BEGIN_BLOCK : root_current_size = READ_ULONG(( buffer + ( 4 + n ) )); next_n = ( n + root_current_size ); /* LayerIdent */ switch (buffer[ ( 1 + n ) ]){ case 1 : /* root */ n = ( 8 + n ); A661_Run_Time_Command_limit = ( ( n + root_current_size ) - 12 ); while(( n < A661_Run_Time_Command_limit )){ /* type A661_Run_Time_Command */ switch (READ_USHORT(( buffer + n ))){ case A661_NOTIFY_WIDGET_EVENT : widget_event_structure_current_size = READ_USHORT(( buffer + ( 2 + n ) )); next_n = ( n + widget_event_structure_current_size ); /* WidgetIdent */ switch (READ_USHORT(( buffer + ( 4 + n ) ))){ case 7504 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SELECTION : /* PushButton_A661_EVT_SELECTION */ /* Notify */ scade_ctx->TEST_SAT_Initialization_Fail = TRUE; break; default : break; } n = next_n; break; case 7503 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SELECTION : /* PushButton_A661_EVT_SELECTION */ /* Notify */ scade_ctx->TEST_SAT_Initialization_Success = TRUE; break; default : break; } n = next_n; break; case 7502 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SELECTION : /* PushButton_A661_EVT_SELECTION */ /* Notify */ scade_ctx->TEST_SAT_Ejection_Signal = TRUE; break; default : break; } n = next_n; break; case 6562 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_VALUE_CHANGE : /* Slider_A661_EVT_VALUE_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_Period_Update = TRUE; /* EvtValue */ scade_ctx->TEST_SAT_Period_Value = READ_FLOAT(( buffer + ( 6 + n ) )); break; default : break; } n = next_n; break; case 6552 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_VALUE_CHANGE : /* Slider_A661_EVT_VALUE_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_DeclinationAngle_Update = TRUE; /* EvtValue */ scade_ctx->TEST_SAT_DeclinationAngle_Value = READ_FLOAT(( buffer + ( 6 + n ) )); break; default : break; } n = next_n; break; case 6542 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_VALUE_CHANGE : /* Slider_A661_EVT_VALUE_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_Longitude_Update = TRUE; /* EvtValue */ scade_ctx->TEST_SAT_Longitude_Value = READ_FLOAT(( buffer + ( 6 + n ) )); break; default : break; } n = next_n; break; case 6532 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_VALUE_CHANGE : /* Slider_A661_EVT_VALUE_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_Latitude_Update = TRUE; /* EvtValue */ scade_ctx->TEST_SAT_Latitude_Value = READ_FLOAT(( buffer + ( 6 + n ) )); break; default : break; } n = next_n; break; case 6522 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_VALUE_CHANGE : /* Slider_A661_EVT_VALUE_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_Altitude_Update = TRUE; /* EvtValue */ scade_ctx->TEST_SAT_Altitude_Value = READ_FLOAT(( buffer + ( 6 + n ) )); break; default : break; } n = next_n; break; case 6512 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_VALUE_CHANGE : /* Slider_A661_EVT_VALUE_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_AirSpeed_Update = TRUE; /* EvtValue */ scade_ctx->TEST_SAT_AirSpeed_Value = READ_FLOAT(( buffer + ( 6 + n ) )); break; default : break; } n = next_n; break; case 5101 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SELECTION : /* PushButton_A661_EVT_SELECTION */ /* Notify */ scade_ctx->envia_foto_btn = TRUE; break; default : break; } n = next_n; break; case 1545 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_STATE_CHANGE : /* ToggleButton_A661_EVT_STATE_CHANGE */ /* Notify */ scade_ctx->TEST_Camera_Fail_Status_Changed = TRUE; /* EvtToggleState */ scade_ctx->TEST_Camera_Fail_Status_Value = buffer[ ( 4 + n ) ]; break; default : break; } n = next_n; break; case 1542 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SEL_ENTRY_CHANGE : /* ComboBox_A661_EVT_SEL_ENTRY_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_CameraState_Update = TRUE; /* EvtEntryNumber */ scade_ctx->TEST_SAT_CameraState_Value = READ_USHORT(( buffer + ( 4 + n ) )); break; default : break; } n = next_n; break; case 1532 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SEL_ENTRY_CHANGE : /* ComboBox_A661_EVT_SEL_ENTRY_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_PropellersState_Update = TRUE; /* EvtEntryNumber */ scade_ctx->TEST_SAT_PropellersState_Value = READ_USHORT(( buffer + ( 4 + n ) )); break; default : break; } n = next_n; break; case 1525 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_STATE_CHANGE : /* ToggleButton_A661_EVT_STATE_CHANGE */ /* Notify */ scade_ctx->_1_Test_HorizonSensor_Fail_Status_Changed = TRUE; /* EvtToggleState */ scade_ctx->Test_HorizonSensor_Fail_Status_Value = buffer[ ( 4 + n ) ]; break; default : break; } n = next_n; break; case 1522 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SEL_ENTRY_CHANGE : /* ComboBox_A661_EVT_SEL_ENTRY_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_HorizonSensorState_Update = TRUE; /* EvtEntryNumber */ scade_ctx->TEST_SAT_HorizonSensorState_Value = READ_USHORT(( buffer + ( 4 + n ) )); break; default : break; } n = next_n; break; case 1515 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_STATE_CHANGE : /* ToggleButton_A661_EVT_STATE_CHANGE */ /* Notify */ scade_ctx->Test_Gyroscope_Fail_Status_Changed = TRUE; /* EvtToggleState */ scade_ctx->Test_Gyroscope_Fail_Status_Value = buffer[ ( 4 + n ) ]; break; default : break; } n = next_n; break; case 1512 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SEL_ENTRY_CHANGE : /* ComboBox_A661_EVT_SEL_ENTRY_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_GyroscopeState_Update = TRUE; /* EvtEntryNumber */ scade_ctx->TEST_SAT_GyroscopeState_Value = READ_USHORT(( buffer + ( 4 + n ) )); break; default : break; } n = next_n; break; case 1502 : /* widget_event_structure */ n = ( 6 + n ); /* type EventStructure */ switch (READ_USHORT(( buffer + ( 2 + n ) ))){ case A661_EVT_SEL_ENTRY_CHANGE : /* ComboBox_A661_EVT_SEL_ENTRY_CHANGE */ /* Notify */ scade_ctx->TEST_SAT_OperationMode_Update = TRUE; /* EvtEntryNumber */ scade_ctx->TEST_SAT_OperationMode_Value = READ_USHORT(( buffer + ( 4 + n ) )); break; default : break; } n = next_n; break; default : break; } break; default : break; } n = next_n; } n = ( 4 + n ); break; default : break; } break; default : break; } return n ; }