void gtkurl_check_all(GtkText *gtktext) { guint origpos; guint pos = 0; guint len; float adj_value; len = gtk_text_get_length(gtktext); adj_value = gtktext->vadj->value; gtk_text_freeze(gtktext); origpos = gtk_editable_get_position(GTK_EDITABLE(gtktext)); while (pos < len) { while (pos < len && iswordsep(GTK_TEXT_INDEX(gtktext, pos))) pos++; while (pos < len && !iswordsep(GTK_TEXT_INDEX(gtktext, pos))) pos++; if (pos > 0) check_at(gtktext, pos-1); } gtk_text_thaw(gtktext); gtk_editable_set_position(GTK_EDITABLE(gtktext), origpos); }
static void entry_delete_cb(GtkText *gtktext, gint start, gint end, gpointer d) { gint origpos; origpos = gtk_editable_get_position(GTK_EDITABLE(gtktext)); check_at(gtktext, start-1); gtk_editable_set_position(GTK_EDITABLE(gtktext), origpos); gtk_editable_select_region(GTK_EDITABLE(gtktext), origpos, origpos); /* this is to *UNDO* the selection, in case they were holding shift * while hitting backspace. */ }
static void entry_insert_cb(GtkText *gtktext, gchar *newtext, guint len, guint *ppos, gpointer d) { gint origpos; gtk_signal_handler_block_by_func(GTK_OBJECT(gtktext), GTK_SIGNAL_FUNC(entry_insert_cb), NULL ); gtk_text_insert(GTK_TEXT(gtktext), NULL, &(GTK_WIDGET(gtktext)->style->fg[0]), NULL, newtext, len); gtk_signal_handler_unblock_by_func(GTK_OBJECT(gtktext), GTK_SIGNAL_FUNC(entry_insert_cb), NULL); gtk_signal_emit_stop_by_name(GTK_OBJECT(gtktext), "insert-text"); *ppos += len; origpos = gtk_editable_get_position(GTK_EDITABLE(gtktext)); if (iswordsep(newtext[0])) { /* did we just end a word? */ if (*ppos >= 2) check_at(gtktext, *ppos-2); /* did we just split a word? */ if (*ppos < gtk_text_get_length(gtktext)) check_at(gtktext, *ppos+1); } else { /* check as they type, *except* if they're typing at the end (the most * common case. */ if (*ppos < gtk_text_get_length(gtktext) && !iswordsep(GTK_TEXT_INDEX(gtktext, *ppos))) check_at(gtktext, *ppos-1); } gtk_editable_set_position(GTK_EDITABLE(gtktext), origpos); gtk_editable_select_region(GTK_EDITABLE(gtktext), origpos, origpos); }
void push_pop_test(infq_t *q) { int m, n; for (int i = 0; i < 50 * 60000 || infq_size(q) != 0; i++) { if (i < 50 * 60000) { if (infq_push(q, &i, sizeof(i)) == INFQ_ERR) { printf("failed to push\n"); return; } printf("push => %d, s => %d\n", i, infq_size(q)); if (i % 500 == 0) { sleep(1); } } if (i % 60 == 0) { m = i > 40 ? 40 : i - 1; if (m > 0) { n = rand() % m; do_pop(q, n); } } if (i % 33 == 0) { check_at(q); } } sleep(3); printf("fin sleep"); int *data; int size; for (int i = 0; i < 4000000; i++) { if (infq_pop_zero_cp(q, (const void **)&data, &size) == INFQ_ERR) { printf("failed to pop\n"); } } }
void check_facing_at(enum Orientation o, int x, int y) { check_facing(o); check_at(x, y); }
void sim900_connect(void) { uint8_t i = 0; uint8_t retry = 3; printk("connect...\r\n"); while(1) { switch(status) { case STATUS_POWERON: sim900_poweron(); clear_rx_buf(); printk("wait for at done\r\n"); for(i = 0; i < retry; i++) { sim900_write("AT\r\n", 4); //sim900_wait(5000000); OSTimeDlyHMSM(0, 0, 0, 400); if(!check_at()) { status = STATUS_CONFIG; break; } clear_rx_buf(); } break; //case STATUS_INIT: case STATUS_CONFIG: printk("wait for config done\r\n"); OSTimeDlyHMSM(0, 0, 10, 0); sim900_write("AT+CREG?\r\n", 10); OSTimeDlyHMSM(0, 0, 0, 100); sim900_write("AT+CIPMODE=1\r\n", 14); OSTimeDlyHMSM(0, 0, 0, 100); sim900_write("AT+CGATT?\r\n", 11); OSTimeDlyHMSM(0, 0, 0, 100); sim900_write("AT+CSTT=\"CMNET\"\r\n", 17); OSTimeDlyHMSM(0, 0, 0, 100); sim900_write("AT+CIICR\r\n", 10); OSTimeDlyHMSM(0, 0, 2, 0); printk("try to get ip address\r\n"); sim900_write("AT+CIFSR\r\n", 10); OSTimeDlyHMSM(0, 0, 0, 100); sim900_write("AT+CGATT=1\r\n", 12); OSTimeDlyHMSM(0, 0, 0, 100); sim900_write("AT+CGSN\r\n", 9); OSTimeDlyHMSM(0, 0, 0, 100); status = STATUS_CONNECTING; break; case STATUS_CONNECTING: printk("wait for connecting...\r\n"); sim900_write("AT+CIPSTATUS\r\n", 14); OSTimeDlyHMSM(0, 0, 2, 0); for(i = 0; i < 1; i++) { clear_rx_buf(); sim900_write(connect_cmd, strlen((char *)&connect_cmd[0])); OSTimeDlyHMSM(0, 0, 3, 0); if(!check_at()) { status = STATUS_CONNECTED; break; } clear_rx_buf(); } if(i >= 1) { //retry failed sim900_write("+++\r\n", 5); OSTimeDlyHMSM(0, 0, 1, 0); sim900_write("AT+CIPCLOSE\r\n", 13); OSTimeDlyHMSM(0, 0, 1, 0); sim900_write("AT+CIPSHUT\r\n", 12); OSTimeDlyHMSM(0, 0, 1, 0); status = STATUS_CONFIG; } break; case STATUS_CONNECTED: printk("Connect done!\r\n"); clear_buf(); return; default: break; } } }