Esempio n. 1
0
void autoiso() {
	ev_t limit;

	ec_t ec = EC_ZERO;
	ev_t ev = EV_ZERO;

	iso_t newiso;

	switch (DPData.ae) {
	case AE_MODE_M:
		if (DPData.tv_val != TV_VAL_BULB) {
			// M mode: set ISO to match exposure
			ec = - (status.measured_ec - persist.ev_comp);

			// Normalize an apply new ISO
			if (ec != EC_ZERO) {
				if (settings.autoiso_relaxed)
					ec = (ec - 1) / 3;

				newiso = DPData.iso + ec;
				newiso = CLAMP(newiso, settings.autoiso_miniso, settings.autoiso_maxiso);
				newiso = EV_ROUND(newiso);

				send_to_intercom(IC_SET_ISO, newiso);
			}
		}

		return;
	case AE_MODE_P:
	case AE_MODE_AV:
		// P / Av mode: raise ISO if shutter time is lower than limit
		ev    = status.measured_tv;
		limit = settings.autoiso_mintv;
		break;
	case AE_MODE_TV:
		// Tv mode: raise ISO if apperture is larger than lens' max plus offset
		ev    = status.measured_av;
		limit = DPData.avo + settings.autoiso_maxav;
		break;
	default:
		return;
	}

	// Decide whether we need to change current ISO
	if (ev != EC_ZERO) {
		if (ev < limit)
			ec = (limit - ev) + EV_CODE(1, 0);
		else if (ev >= limit + EV_CODE(1, 0))
			ec = (limit - ev);
	}

	// Normalize an apply new ISO
	if (ec != EC_ZERO) {
		newiso = DPData.iso + ec;
		newiso = CLAMP(newiso, settings.autoiso_miniso, settings.autoiso_maxiso);
		newiso = EV_TRUNC(newiso);

		send_to_intercom(IC_SET_ISO, newiso);
	}
}
Esempio n. 2
0
static void parse_user_command_lsu_in(char *str)
{
  char *oldstack, *job_id;
  player *p;
  char empty_string[2];

  empty_string[0] = 0;

  oldstack = stack;

  /*Format will be job_id */

  job_id = str;

  if (!job_id || !*job_id)
  {
    log("error", "Bad format in lsu from intercom.\n");
    return;
  }
  send_to_intercom(NULL, "%c%c%s:x:%c", REPLY_IS, COMMAND_LSU,
		   job_id, (char) INCOMPLETE_MESSAGE);

  p = make_dummy_intercom_player();

  lsu(p, empty_string);
  send_to_intercom(NULL, "%c", (char) END_MESSAGE);

  stack = oldstack;

  return;
}
Esempio n. 3
0
void viewfinder_end() {
	switch (status.vf_status) {
	case(VF_STATUS_ISO):
		switch (DPData.ae) {
		case AE_MODE_M:
		case AE_MODE_TV:
			// Restore previous state
			send_to_intercom(IC_SET_CF_EMIT_FLASH, vf_DPData.cf_emit_aux);
			send_to_intercom(IC_SET_TV_VAL,        vf_DPData.tv_val);
			break;
		case AE_MODE_P:
		case AE_MODE_AV:
			send_to_intercom(IC_SET_BURST_COUNTER, 9);
			break;
		default:
			break;
		}

		break;
	case(VF_STATUS_MSM):
		msm_release();
		break;
	default:
		break;
	}

	status.vf_status = VF_STATUS_NONE;
}
Esempio n. 4
0
void msm_stop(void) {
	wait_for_camera();
	SleepTask(RELEASE_WAIT);

	send_to_intercom(IC_SET_TV_VAL, msm_tv_return);
	send_to_intercom(IC_SET_AV_VAL, msm_av_return);
	send_to_intercom(IC_SET_AE,     msm_ae_return);

	enqueue_action(msm_reset);
}
Esempio n. 5
0
void intercom_site_move(player * p, char *str)
{
  char *site = 0, *port = 0;
  char *oldstack;

  oldstack = stack;
  site = str;

  if (p->flags & BLOCK_SU)
  {
    tell_player(p, "Please go on duty to do that.\n");
    return;
  }
  if (site && *site)
  {
    port = strchr(site, ':');
    if (port)
      *port++ = 0;
  }
  if (!port || !*port || !site || !*site)
  {
    tell_player(p, " Format: intercom announce_move sitename:portnumber\n");
    return;
  }
  TELLPLAYER(p, " Informing all remote talkers of the address change to "
	     "%s %s\n", site, port);

  send_to_intercom(p, "%c%s:%s", WE_ARE_MOVING, site, port);

  close_intercom(p, str);

  return;
}
Esempio n. 6
0
void do_intercom_think(player * p, char *str)
{
  char *oldstack;

  oldstack = stack;

  if (!str || !*str)
  {
    log("error", "Zero length string passed to do_intercom_think\n");
    return;
  }
  TELLPLAYER(p, " You think . o O ( %s )\n", str);

  sprintf(oldstack, "%s thinks . o O ( %s )\n", p->name, str);
  stack = end_string(oldstack);

  tell_room_but(p, intercom_room, oldstack);

  stack = oldstack;

  send_to_intercom(p, "%c%c%s:x:x:thinks . o O ( %s )", USER_COMMAND,
		   COMMAND_EMOTE, p->name, str);

  return;
}
Esempio n. 7
0
void do_intercom_tell(player * p, char *str)
{
  char *name, *talker, *msg, *oldstack;
  list_ent *l = 0;

  /*Assume we have a str and a space and
     a message, as we checked it before calling it */

  name = str;

  msg = strchr(name, ' ');

  *msg++ = '\0';

  if (strchr(name, ','))
  {
    tell_player(p, " You cannot do chain tells to people and include remote"
		" talkers.\n");
    return;
  }
  talker = strchr(name, '@');
  if (talker)
  {
    l = find_list_entry(p, name);
    if (!l)
      l = find_list_entry(p, talker);
    *talker++ = '\0';
  }
  if (!name || !*name || !talker || !*talker)
  {
    tell_player(p, " Badly formed remote address.\n");
    return;
  }
  if (!l)
    l = find_list_entry(p, "@");
  if (!l)
    l = find_list_entry(p, name);

  oldstack = stack;

  if (l)
  {
    if (l->flags & (IGNORE | BLOCK))
    {
      sprintf(oldstack, " You cannot tell to them, as you are %sing"
	      " %s.\n", l->flags & IGNORE ? "ignor" : "block", l->name);
      stack = end_string(oldstack);

      tell_player(p, oldstack);

      return;
    }
  }
  send_to_intercom(p, "%c%c%s:%s:%s:%s", USER_COMMAND, COMMAND_TELL,
		   p->name, talker, name, msg);

  command_type = 0;

  return;
}
Esempio n. 8
0
void viewfinder_change_iso(iso_t iso) {
	// Set new ISO
	send_to_intercom(IC_SET_ISO, iso);

	// Display new ISO
	viewfinder_display_iso(iso);
}
Esempio n. 9
0
void do_intercom_emote(player * p, char *str)
{
  char *oldstack;

  oldstack = stack;

  if (!str || !*str)
  {
    log("error", "Zero length string passed to do_intercom_emote\n");
    return;
  }
  if (*str == '\'')
    TELLPLAYER(p, " You emote: %s%s\n", p->name, str);
  else
    TELLPLAYER(p, " You emote: %s %s\n", p->name, str);


  if (*str == '\'')
    sprintf(oldstack, "%s%s\n", p->name, str);
  else
    sprintf(oldstack, "%s %s\n", p->name, str);
  stack = end_string(oldstack);

  tell_room_but(p, intercom_room, oldstack);

  stack = oldstack;

  send_to_intercom(p, "%c%c%s:x:x:%s", USER_COMMAND, COMMAND_EMOTE,
		   p->name, str);

  return;
}
Esempio n. 10
0
File: utils.c Progetto: AEUG/400plus
int remote_on() {
	int result = eventproc_RemOn();
	// disable MLU, since it's not working correctly with IR
	send_to_intercom(IC_SET_CF_MIRROR_UP_LOCK, 0);
	SleepTask(EVENT_WAIT);

	return result;
}
Esempio n. 11
0
void intercom_update_servers(player * p, char *str)
{
  tell_player(p, " Requesting talker lists from all connected talkers.\n");

  send_to_intercom(p, "%c", REQUEST_SERVER_LIST);

  return;
}
Esempio n. 12
0
void msm_register(void) {
	static int  last_flag; // Last value registered can be deleted
	static tv_t last_tv;   // Last Tv value registered
	static av_t last_av;   // Last Av value registered

	int ts_start = timestamp();

	if (status.measuring) {
		if (status.msm_count < 8) {
			status.vf_status = VF_STATUS_MSM;
			send_to_intercom(IC_SET_BURST_COUNTER, status.msm_count + 1);
		}

		beep();
	}

	while (status.button_down == BUTTON_DOWN) {
		if (timestamp() - ts_start > MSM_TIMEOUT) {
			if (last_flag) {
				status.msm_count--;

				status.msm_tv -= last_tv;
				status.msm_av -= last_av;

				last_flag = FALSE;

				send_to_intercom(IC_SET_BURST_COUNTER, status.msm_count);
				beep();
			}

			return;
		}

		SleepTask(MSM_RETRY);
	}

	status.msm_count++;

	status.msm_tv += status.measured_tv;
	status.msm_av += status.measured_av;

	last_flag = TRUE;
	last_tv   = status.measured_tv;
	last_av   = status.measured_av;
}
Esempio n. 13
0
void open_intercom(player * p, char *str)
{
  if (p->flags & BLOCK_SU)
  {
    tell_player(p, "Please go on duty to do that.\n");
    return;
  }
  send_to_intercom(p, "%c%s:", OPEN_ALL_LINKS, p->name);
}
Esempio n. 14
0
static void parse_user_command_finger_in(char *str)
{
  char *oldstack, *job_id, *name = 0;
  player *p;

  oldstack = stack;

  /*Format will be job_id:name */

  job_id = str;
  if (job_id && *job_id)
  {
    name = strchr(job_id, ':');
    if (name)
      *name++ = '\0';
  }
  if (!name || !*name || !job_id || !*job_id)
  {
    log("error", "Bad format in finger from intercom.\n");
    return;
  }
  if (!strcasecmp(name, "me"))
  {
    send_to_intercom(NULL, "%c%c%s:me", REPLY_IS, NO_SUCH_PLAYER, job_id);
    return;
  }
  if (!strcasecmp(name, "friends"))
  {
    send_to_intercom(NULL, "%c%c%s:friends", REPLY_IS, NO_SUCH_PLAYER, job_id);
    return;
  }
  send_to_intercom(NULL, "%c%c%s:x:%c", REPLY_IS, COMMAND_FINGER,
		   job_id, (char) INCOMPLETE_MESSAGE);

  p = make_dummy_intercom_player();
  newfinger(p, name);
  send_to_intercom(NULL, "%c", (char) END_MESSAGE);

  stack = oldstack;

  return;

}
Esempio n. 15
0
void unbar_talker(player * p, char *str)
{
  if (!*str)
  {
    tell_player(p, " Format: unbar <name>\n");
    return;
  }
  send_to_intercom(p, "%c%s:%s", UNBAR_LINK, p->name, str);

  return;
}
Esempio n. 16
0
void intercom_ping(player * p, char *str)
{
  if (!*str)
  {
    tell_player(p, " Format: ping <talker>\n");
    return;
  }
  send_to_intercom(p, "%c%s:%s", OPEN_LINK, p->name, str);

  return;
}
Esempio n. 17
0
void delete_intercom_server(player * p, char *str)
{
  if (!*str)
  {
    tell_player(p, " Format: delete_server <name|alias>\n");
    return;
  }
  send_to_intercom(p, "%c%s:%s", DELETE_LINK, p->name, str);

  return;
}
Esempio n. 18
0
void intercom_unhide(player * p, char *str)
{
  if (!*str)
  {
    tell_player(p, " Format: intercom unhide <talker>\n");
    return;
  }
  send_to_intercom(p, "%c%s:%s", UNHIDE_ENTRY, p->name, str);

  return;
}
Esempio n. 19
0
static void parse_user_command_examine_in(char *str)
{
  char *oldstack, *job_id, *name = 0;
  player *p;

  oldstack = stack;

  /*Format will be job_id:name */

  job_id = str;
  if (job_id && *job_id)
  {
    name = strchr(job_id, ':');
    if (name)
      *name++ = '\0';
  }
  if (!name || !*name || !job_id || !*job_id)
  {
    log("error", "Bad format in examine from intercom.\n");
    return;
  }
  if (!strcasecmp(name, "me"))
  {
    send_to_intercom(NULL, "%c%c%s:me", REPLY_IS, NO_SUCH_PLAYER, job_id);
    return;
  }
  /*We know they are here, and exist, so we can examine, otherwise end */

  send_to_intercom(NULL, "%c%c%s:x:%c", REPLY_IS, COMMAND_EXAMINE,
		   job_id, (char) INCOMPLETE_MESSAGE);

  p = make_dummy_intercom_player();
  newexamine(p, name);
  send_to_intercom(NULL, "%c", (char) END_MESSAGE);

  stack = oldstack;

  return;

}
Esempio n. 20
0
void add_intercom_server(player * p, char *str)
{
  char *name, *abbr, *addr, *port, *oldstack;

  name = str;
  abbr = 0;
  addr = 0;
  port = 0;

  if (*name)
  {
    abbr = strchr(name, ':');
    if (abbr)
    {
      *abbr++ = '\0';
      if (*abbr)
      {
	addr = strchr(abbr, ':');
	if (addr)
	{
	  *addr++ = '\0';
	  if (*addr)
	  {
	    port = strchr(addr, ':');
	    if (port)
	      *port++ = '\0';
	  }
	}
      }
    }
  }
  if (!port || !*port || !*addr || !*abbr || !name || !*name)
  {
    tell_player(p, "Format: add_server "
		"<name>:<abbreviation>:<address>:<port>\n");
    return;
  }
  oldstack = stack;

  sprintf(oldstack, " Sending request to intercom to add %s to the database, "
	  "at address %s %s, abbreviated to %s.\n", name, addr, port, abbr);
  stack = end_string(oldstack);

  tell_player(p, oldstack);

  stack = oldstack;

  send_to_intercom(p, "%c%s:%s:%s:%s:%s:O",
		   ADD_NEW_LINK, p->name, name, abbr, addr, port);

  return;
}
Esempio n. 21
0
void display_brightness() {
	if (settings.button_disp)
		switch (FLAG_GUI_MODE) {
		case GUIMODE_OFF:
			send_to_intercom(IC_SET_LCD_BRIGHTNESS, 1);
			press_button(IC_BUTTON_DISP);
			break;

		case GUIMODE_OLC:
			if (DPData.lcd_brightness < 7)
				send_to_intercom(IC_SET_LCD_BRIGHTNESS, 1 + DPData.lcd_brightness);
			else
				press_button(IC_BUTTON_DISP);
			break;

		default:
			press_button(IC_BUTTON_DISP);
			break;
		}
	else
		press_button(IC_BUTTON_DISP);
}
Esempio n. 22
0
void do_intercom_who(player * p, char *str)
{
  /*Sanity check */
  if (!*str || *str != '@' || !*(str + 1))
  {
    log("error", "Intercom who called with invalid arg");
    return;
  }
  send_to_intercom(p, "%c%c%s:%s:%s:%s", USER_COMMAND, COMMAND_WHO,
		   p->name, str + 1, "x", "x");

  return;
}
Esempio n. 23
0
void msm_start(void) {
	if (status.msm_count > 0) {
		status.msm_active = TRUE;

		tv_t tv = ev_normalize(status.msm_tv / status.msm_count);
		av_t av = ev_normalize(status.msm_av / status.msm_count);

		av_t av_max = DPData.ef_lens_exist ? DPData.avmax : AV_MAX;
		av_t av_min = DPData.ef_lens_exist ? DPData.avo   : AV_MIN;

		msm_ae_return = DPData.ae;
		send_to_intercom(IC_SET_AE, AE_MODE_M);

		msm_tv_return = DPData.tv_val;
		msm_av_return = DPData.av_val;

		send_to_intercom(IC_SET_TV_VAL, CLAMP(tv, TV_MIN, TV_MAX));
		send_to_intercom(IC_SET_AV_VAL, CLAMP(av, av_min, av_max));

		enqueue_action(beep);
	}
}
Esempio n. 24
0
File: utils.c Progetto: AEUG/400plus
void dump_memory() {
	char filename[20] = "A:/12345678.MEM";
	time_t t;
	struct tm tm;

	time(&t);
	localtime_r(&t, &tm);

	sprintf(filename, "A:/%02d%02d%02d%02d.MEM", tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);

	debug_log("Dumping memory to %s.\n", filename);
	int file = FIO_OpenFile(filename, O_CREAT | O_WRONLY , 644);

	if (file == -1) {
		debug_log("ERROR: can't open file for writing (%s)", filename);
		beep();
		beep();
	} else {
		int addr=0;
		int power_off_state = DPData.auto_power_off;

		send_to_intercom(IC_SET_AUTO_POWER_OFF, false);

		while (addr<0x800000) { // dump 8MB of RAM
			char buf[0x800];
			// i don't know why, but if we try to pass the mem address (addr) directly to
			// FIO_WriteFile, we get zero-filled file... so we need local buffer as a proxy
			// note: do not increase the size of the local buffer too much, because it is in the stack
			LEDBLUE ^= 2;
			memcpy(buf, (void*)addr, 0x800);
			FIO_WriteFile(file, buf, 0x800);
			addr += 0x800;
		}
		FIO_CloseFile(file);

		send_to_intercom(IC_SET_AUTO_POWER_OFF, power_off_state);
	}
	beep();
}
Esempio n. 25
0
void intercom_locate_name(player * p, char *str)
{
  /*Sanity check */
  if (!str || !*str)
  {
    tell_player(p, " Format: intercom locate <name>\n");
    return;
  }
  send_to_intercom(p, "%c%c%s:x:%s:x", USER_COMMAND, COMMAND_LOCATE,
		   p->name, str);

  return;
}
Esempio n. 26
0
void list_intercom_servers(player * p, char *str)
{
  if (str && *str)
  {
    if (!strcasecmp(str, "hidden") && p->residency & PSU)
    {
      send_to_intercom(p, "%c%c%s:", SHOW_LINKS, LIST_HIDDEN, p->name);
      return;
    }
    if (!strcasecmp(str, "up"))
    {
      send_to_intercom(p, "%c%c%s:", SHOW_LINKS, LIST_UP, p->name);
      return;
    }
    if (isalpha(*str))
    {
      send_to_intercom(p, "%c%c%s:", SHOW_LINKS, tolower(*str), p->name);
    }
  }
  send_to_intercom(p, "%c%c%s:", SHOW_LINKS, LIST_ALL, p->name);

  return;
}
Esempio n. 27
0
void intercom_banish(player * p, char *str)
{
  if (!*str)
  {
    tell_player(p, " Format: banish <name|alias>\n");
    return;
  }
  if (p->flags & BLOCK_SU)
  {
    tell_player(p, "Please go on duty to do that.\n");
    return;
  }
  send_to_intercom(p, "%c%s:%s", BANISH_SITE, p->name, str);
  return;
}
Esempio n. 28
0
void kill_intercom()
{
  if (intercom_fd > 0)
    send_to_intercom(NULL, "%c", INTERCOM_DIE);

  intercom_fd = -1;

  if (!(sys_flags & SHUTDOWN) && (!current_player))
    log("error", "Shutting down intercom server.\n");

  if (intercom_pid > 1)
    /*if (kill(intercom_pid, SIGHUP) < 0) */
    kill(intercom_pid, SIGKILL);

  intercom_pid = -1;

  return;
}
Esempio n. 29
0
void do_intercom_say(player * p, char *str)
{
  char *ptr, *oldstack;
  const char *method;

  oldstack = stack;

  ptr = strchr(str, 0);
  ptr--;

  if (ptr < str)
  {
    log("error", "Zero length string passed to do_intercom_say\n");
    return;
  }
  switch (*ptr)
  {
    case '!':
      method = "exclaim";
      break;
    case '?':
      method = "ask";
      break;
    default:
      method = "say";
      break;
  }

  TELLPLAYER(p, " You %s '%s'\n", method, str);

  sprintf(oldstack, "%s %ss '%s'\n", p->name, method, str);

  stack = end_string(oldstack);

  tell_room_but(p, intercom_room, oldstack);

  stack = oldstack;

  send_to_intercom(p, "%c%c%s:x:x:%s", USER_COMMAND, COMMAND_SAY,
		   p->name, str);

  return;
}
Esempio n. 30
0
static void parse_user_command_who_in(char *str)
{
  char *oldstack;
  player *scan;
  int count = 0;

  if (!str || !*str)
    return;

  oldstack = stack;

  scan = flatlist_start;

  while (scan)
  {
    if (scan->location)
    {
      sprintf(stack, "%s%s:", scan->location == intercom_room ? "*" : "",
	      scan->name);
      stack = strchr(stack, 0);
      count++;
    }
    scan = scan->flat_next;
  }

  if (count > 0)
  {
    stack--;
    *stack = 0;
  }
  sprintf(stack, "\nThere %s currently %d user%s connected to ",
	  count != 1 ? "are" : "is", count, count != 1 ? "s" : "");

  stack = end_string(stack);

  send_to_intercom(NULL, "%c%c%s:x:%s", REPLY_IS, COMMAND_WHO, str, oldstack);

  stack = oldstack;

  return;
}